¿Sopa hermosa si la clase “contiene” o Regex?

Si los nombres de mis clases son constantemente diferentes, por ejemplo:

listing-col-line-3-11 dpt 41 listing-col-block-1-22 dpt 41 listing-col-line-4-13 CWK 12 

Normalmente podría hacer:

 for EachPart in soup.find_all("div", {"class" : "ClassNamesHere"}): print EachPart.get_text() 

Hay demasiados nombres de clase para trabajar aquí, así que un montón de estos están fuera.

Sé que Python no tiene un “.contains” que yo usaría normalmente pero tiene un “in”. Aunque no he podido encontrar una manera de incorporar eso.

Espero que haya una manera de hacer esto con expresiones regulares. Aunque nuevamente mi syntax de Python realmente me está fallando, he estado probando variaciones en:

 regex = re.compile('.*listing-col-.*') for EachPart in soup.find_all(regex): 

Pero eso no parece estar haciendo el truco.

BeautifulSoup admite selectores de CSS que le permiten seleccionar elementos según el contenido de atributos particulares. Esto incluye el selector *= para contiene.

Lo siguiente devolverá todos los elementos div con un atributo de class contiene el texto ‘listing-col-‘:

 for EachPart in soup.select('div[class*="listing-col-"]'): print EachPart.get_text() 

Yu puede intentar esto:

 regex = re.compile('.*listing-col-.*') for EachPart in soup.find_all("div", {"class" : regex}): print EachPart.get_text()