“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.
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:
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 utilizandotag["class"][0]
. Si coincide con el nombre de clase deseado, llamamos a la función correspondiente.Tenga en cuenta que utilizamos
class_
en lugar declass
en el métodofind_all()
porqueclass
es una palabra clave reservada en Python.