2012-03-30 20 views

cevap

1

Benim için iş gibi görünüyor, bu yüzden sorun html belgeyle olduğunu söyleyebilirim.

from bs4 import BeautifulSoup 

html_doc = """<html> 
<body> 
    <a class="black"> 
    <b> 
    text1 
    </b> 
    <c> 
    text2 
    </c> 
    </a> 
    <a class="micio"> 
    </a> 
    <a class="black"> 
    </a> 
</body> 
</html>""" 
soup = BeautifulSoup(html_doc) 
soup.prettify() 
print(soup.find_all("a", {"class":"black"})) 

Ve çıktı olarak aldım:

[<a class="black"> 
<b> 
    text1 
    </b> 
<c> 
    text2 
    </c> 
</a>, <a class="black"> 
</a>] 

Düzenleme: işaret ettiği @Puneet gibi, sorun olmaması olabilir

Aşağıdaki kaçmaya çalıştı aldığınız html öznitelikleri arasındaki beyaz boşluk.

Ben böyle bir şey yukarıdaki örneği için örneğin çalıştı:

html_doc = """<html> 
<body> 
    <aclass="black"> 

# etc.. as before 

Ve sonuç olarak boş bir liste var: [].

1

Burada sorun, web sitesinin sınıf etiketlerinin, href öznitelik değerinin sonuna bir boşlukla ayrılmış olmasıdır. BeautifulSoup bunu çok iyi halletmiyor. Bir tekrarlanabilir test durumu o LXML kullanarak sorunu çözer seams aşağıdaki

>>> BeautifulSoup.BeautifulSoup('<a href="http://www.jutarnji.hr/crkva-se-ogradila-od--cjenika--don-mikica--osim-krizme--sve-druge-financijske-obveze-su-neprihvatljive/1018314/" class="black">').prettify() 
'<a href="http://www.jutarnji.hr/crkva-se-ogradila-od--cjenika--don-mikica--osim-krizme--sve-druge-financijske-obveze-su-neprihvatljive/1018314/" class="black">\n</a>' 
>>> BeautifulSoup.BeautifulSoup('<a href="http://www.jutarnji.hr/crkva-se-ogradila-od--cjenika--don-mikica--osim-krizme--sve-druge-financijske-obveze-su-neprihvatljive/1018314/"class="black">').prettify() 
'' 
0

geçerli:

from bs4 import BeautifulSoup 
import lxml 
from urllib import urlopen 

url = "http://www.jutarnji.hr" 
html_doc = urlopen(url).read() 
soup = BeautifulSoup(html_doc, "lxml") 
soup.prettify() 

soup.find_all("a", {"class":"black"}) 
1

Ben de aynı problem vardı.

soup.findAll("a",{"class":"black"}) 

yerine

soup.find_all("a",{"class":"black"}) 

soup.findAll() benim için iyi çalışıyor deneyin.

+0

Ayrıca, gibi diğer öğelerle çalışır: soup.findAll ("label", "" için ":" Form_CompanyName "}) –