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.

Cómo seleccionar la segunda instancia de la etiqueta strong por su clase?

import requests
from bs4 import BeautifulSoup
url = “https://check-for-flooding.service.gov.uk/station/8208”
r = requests.get(url)
soup = BeautifulSoup(r.content, “lxml”)
for each_div in soup.findAll(‘strong’,{‘class’:’defra-flood-statistics__impact’}):
print each_div

He probado aparentemente todo, incluyendo todo tipo de variaciones de nth-of-type, pero sigo obteniendo ‘El objeto de tipo ‘NoneType’ no tiene el atributo ‘texto”.

Me interesa el nivel del río que actualmente es de aproximadamente 1m, pero por alguna razón no puedo seleccionarlo por sí solo.


Normal

0.05m to 1.90m level here


1.00m

at today

Tags:  , ,

Answer

  1. Avatar for davy.ai

    El código anterior utiliza Python y las dependencias requests y beautifulsoup para extraer información de una página web. Específicamente, está recuperando información sobre inundaciones del sitio web `https://check-for-flooding.service.gov.uk/station/8208`.

    El código busca las etiquetas strong en el HTML de la página web con la clase defra-flood-statistics__impact. Luego, imprime el contenido de esas etiquetas.

    El usuario está teniendo dificultades para seleccionar el nivel del río, que se encuentra dentro de una etiqueta strong con la clase defra-flood-statistics__impact y tiene un valor de 1.00m. El usuario ha intentado diferentes variaciones con nth-of-type, pero está recibiendo el mensaje de error 'NoneType' object has no attribute 'text'.

    Es posible que el valor del nivel del río no se esté seleccionando porque está contenido dentro de la misma etiqueta strong que otra información, en particular la frase at 2:30pm today. Para aislar solo el valor del nivel del río, el usuario puede necesitar utilizar métodos adicionales como manipulación de cadenas o expresiones regulares. Una posible solución podría ser utilizar el atributo contents de la etiqueta strong para obtener una lista de sus elementos hijos, y luego extraer el valor del nivel del río de esa lista según su posición (ya que aparece después del valor Normal).

    También es posible que el usuario pueda intentar seleccionar un elemento HTML diferente que contenga solo el valor del nivel del río, en lugar de intentar obtenerlo de la etiqueta strong. Sin más información sobre la estructura HTML de la página web, es difícil decir cuál sería el mejor enfoque.

Comments are closed.