2016-01-07 20 views
5

:Sınıf "İçeriyor" veya Regex Güzel Çorba? Benim sınıf adları örneğin sürekli farklı diyelim ise

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

Normalde yapabilirdi:

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

bu yüzden bu bir grup dışında burada çalışmak için yol çok sınıf isimler var .

Python normalde kullandığınız bir ".Contains" yok biliyorum ama bir 'in' var. Yine de bunu birleştirmenin bir yolunu bulamadım. Umarım

regex ile bunu yapmanın bir yolu var. yine benim Python sözdizimi gerçekten beni icar rağmen ben varyasyonlarını çalışıyorum:

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

Ama bu hile yapıyor gibi görünmüyor.

cevap

6

BeautifulSoup belirli özelliklerin içeriğine dayalı unsurları seçmenize izin CSS selectors destekler. Bu, içerdiği *= seçiciyi içerir.

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

şu metin '-col- listeleme' içeren bir class niteliği olmayan tüm div unsurları dönecektir

1

Yu bu deneyebilirsiniz:

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