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.

Obteniendo información mediante web scraping con bs dentro de las etiquetas span.

Estoy intentando obtener información desde un elemento span con un valor.

<td class="subtableheader">Status</td>
  <td class="profilerow"><span id="status" value="Levend (Offline for 0H 1M)">Levend (Offline for <abbr title="02-01-2022 22:53:24">0H 1M</abbr>)</span>
  </td>

Quiero obtener la siguiente información:

Levend (Offline for <abbr title="02-01-2022 22:53:24">0H 1M</abbr>)

Esto es dinámico y puede cambiar (offline durante 2 minutos, etc.). He intentado obtener la información con este código:

soup = BeautifulSoup(s.content, 'html.parser')
data = soup.find(lambda tag: tag.name == 'span' and tag.get_text(strip=True) == 'Levend')

Pero obtengo una respuesta vacía. Lo intenté de esta manera porque “Levend” siempre está ahí.

¿Qué estoy haciendo mal y cómo puedo solucionarlo?

Tags:  ,

Answer

  1. Avatar for davy.ai

    Tu implementación actual solo encuentra la etiqueta “span” con el texto exacto “Levend”. Para obtener la información que deseas, debes modificar tu código para encontrar la etiqueta “span” con el id “status” y extraer su atributo de valor. Aquí tienes un ejemplo de código que debería funcionar:

    soup = BeautifulSoup(s.content, 'html.parser')
    status_span = soup.find('span', {'id': 'status'})
    status_info = status_span['value']
    print(status_info)
    

    Esto debería producir la siguiente salida:

    Levend (Desconectado durante <abbr title="02-01-2022 22:53:24">0H 1M</abbr>)
    

    Ten en cuenta que si hay varias etiquetas “span” con el id “status”, este código solo obtendrá la primera. Es posible que necesites refinar tus criterios de búsqueda si ese es el caso.

Comments are closed.