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
…
davy.ai
El código anterior utiliza Python y las dependencias
requests
ybeautifulsoup
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 clasedefra-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 clasedefra-flood-statistics__impact
y tiene un valor de1.00m
. El usuario ha intentado diferentes variaciones connth-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 fraseat 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 atributocontents
de la etiquetastrong
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 valorNormal
).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.