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.

“Buscar clase específica en Beatiful Soup”

Estoy obteniendo todas las ocurrencias de una etiqueta específica (td) con la función “find_all()”, pero quiero manejar diferentes clases. Mis etiquetas se ven algo así:

<td class="classname" colspan="2">
Algo...
</td>

Quiero hacer diferentes cosas dependiendo de la clase del nombre.

Intenté usar “has_attr()” pero parece que solo verifica si hay un solo atributo presente y no funciona para expresiones completas.

for tag in soup.find_all("td"):
  if tag.has_attr("td", {"class": "search-detail-heading"}):
    hacer algo()
  if tag.has_attr("td", {"class": "search-detail-subject"}):
    hacer algo más()

¿Existe otro método para verificar esta clase de nombre? ¿Necesito ajustar “find_all()”? Realmente no quiero usar “find_all()” para un tipo de clase y luego nuevamente para el siguiente tipo de clase.

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Sí, se puede utilizar el método find_all() con un selector específico de clase CSS para obtener todas las instancias de una etiqueta específica con una clase en particular. Aquí está un ejemplo:

    for tag in soup.find_all("td", class_="classname"):
        if tag["class"][0] == "search-detail-heading":
            hacer_algo()
        elif tag["class"][0] == "search-detail-subject":
            hacer_otra_cosa()
    

    En este fragmento de código, usamos "td" como el nombre de la etiqueta y "classname" como el selector de clase CSS para encontrar todas las instancias de las etiquetas <td> con la clase "classname". Luego, recorremos todas las etiquetas encontradas y verificamos el valor del atributo de clase utilizando tag["class"][0]. Si coincide con el nombre de clase deseado, llamamos a la función correspondiente.

    Tenga en cuenta que utilizamos class_ en lugar de class en el método find_all() porque class es una palabra clave reservada en Python.

Comments are closed.