es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

No es posible obtener todo el código HTML al usar requests.get o webdriver.get.

Estoy intentando extraer 100,0% del atributo style:

html
<div class="w-full mt-1 bg-white rounded-lg shadow">
<div class="py-1 bg-purple-900 rounded-lg" style="width: 100.0%"></div>
</div>

La respuesta de la fuente de la página no llega tan profundo en la página, he intentado:

def ScrapePercents():
    URL = "https://citystrides.com/cities/26013/search_striders?page=1"
    page = requests.get(URL)

<pre><code>soup = BeautifulSoup(page.content, "html.parser")    
results = soup.find("div", class_="flex flex-wrap space-y-4")    
percents = results.find_all("div", class_="py-1 bg-purple-900 rounded-lg")

pl = []

for percent in percents:
    cleantext = percent['style'].lstrip('width: ')
    percent_neat = (cleantext.strip('%'))
    percent_float = float(percent_neat)
    pl.append(percent_float)
    print("pl as it appends ", pl)

return pl
</code></pre>

y

def Selenium():
    print("shell for selenium")
    pl = "shell for selenium percents"
    driver = webdriver.Chrome("chromedriver.exe")
    driver.get("https://citystrides.com/cities/26013/search<em>striders")
    content = driver.page</em>source

<pre><code>soup = BeautifulSoup(content)
results = soup.find("div", class_="flex flex-wrap space-y-4")

return soup
</code></pre>

El segundo código se establece solo para ver si el contenido incluye el div anidado. Estoy luchando por averiguar cómo obtener el div anidado.

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Para raspar los div anidados con el atributo style que contengan 100.0%, puede modificar el código agregando un loop dentro del loop existente para buscar el elemento div anidado. Así es como puede hacerlo:

    def ScrapePercents():
        URL = "https://citystrides.com/cities/26013/search_striders?page=1"
        page = requests.get(URL)
    
        soup = BeautifulSoup(page.content, "html.parser")
        results = soup.find("div", class_="flex flex-wrap space-y-4")
        percents = results.find_all("div", class_="py-1 bg-purple-900 rounded-lg")
    
        pl = []
    
        for percent in percents:
            div_style = percent.get("style")
            if div_style and "width: 100.0%" in div_style:
                nested_div = percent.find("div")
                if nested_div:
                    cleantext = nested_div.get("style").lstrip("width: ").rstrip("%;")
                    percent_float = float(cleantext)
                    pl.append(percent_float)
                    print("pl as it appends ", pl)
    
        return pl
    

    En este código modificado, primero verificamos si el atributo style del elemento div externo contiene width: 100.0%. Si es así, buscamos el elemento div anidado usando percent.find("div") y extraemos su atributo style para obtener el ancho como una cadena de porcentaje. Luego, convertimos la cadena de porcentaje en un flotante y la agregamos a la lista pl.

    Tenga en cuenta que también agregamos un ; al método rstrip para eliminar cualquier punto y coma adicional en el atributo style. Esto es para manejar casos en los que el atributo style tiene propiedades adicionales además del width.

Comments are closed.