Beautifulsoup selector de clase múltiple

Quiero seleccionar todos los divs que tienen AMBOS A y B como atributos de clase.

La siguiente seleccion

soup.findAll('div', class_=['A', 'B']) 

sin embargo, selecciona todos los divs que tengan O A o B en sus atributos de clase. Las clases pueden tener muchos otros atributos (C, D, etc.) en cualquier orden, pero quiero seleccionar solo aquellos que tienen tanto A como B.

Use css selectors lugar:

 soup.select('div.A.B') 

Puede utilizar los selectores de CSS en su lugar, que es probablemente la mejor solución aquí.

 soup.select("div.classname1.classname2") 

También podrías usar una función.

 def interesting_tags(tag): if tag.name == "div": classes = tag.get("class", []) return "A" in classes and "B" in classes soup.find_all(interesting_tags) 

1 alguna etiqueta como:

 XXXX 

Si desea usar el selector de CSS para obtener la etiqueta, puede escribir el código para el atributo de clase de la siguiente manera:

 spans = beautifulsoup.select('span.ABCD') 

2 Y si desea usar esto para el atributo id, cambia de la siguiente manera:

 XXXX 

cambia el símbolo que usas en la función de selección:

 span = beautifulsoup.select('span#A') 

Lo que aprendemos es que su gramática es como la CSS3.