2012-03-30 19 views
5

私の最初の記事をタグ検索、私はこの特定のHTMLに含まれるすべてのタグを見つけようとしていると私はそれらを得ることができない、これはコードです:のpython BeautifulSoupここ

from bs4 import BeautifulSoup 
from urllib import urlopen 

url = "http://www.jutarnji.hr" 
html_doc = urlopen(url).read() 
soup = BeautifulSoup(html_doc) 
soup.prettify() 
soup.find_all("a", {"class":"black"}) 

は、[関数の戻りを見つけます]、しかし、私はクラスのタグがあることを参照してください:HTMLで "黒"、私は何かが恋しいですか?

おかげで、 Vedran

+0

どのようなpythonバージョン/ライブラリバージョン/ osを使用していますか? – fabrizioM

答えて

1

は、私のために動作しているようですので、私はこの問題は、HTMLドキュメントであることを言うだろう。

私は次のことを実行しようとした:

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"})) 

、出力として私が得た:

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

編集:@Puneetとしてが指摘した、問題がないことかもしれませんがフェッチしているhtml内の属性間の空白を

私のようなものに上記の例を変更するには、インスタンスのために試してみました:

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

# etc.. as before 

そして、私は結果として空のリストだ:[]を。

1

ここでの問題は、ウェブサイトのクラスタグがhref属性値の末尾からスペースで区切られていないことです。 BeautifulSoupはこれをうまく処理してくれません。再現可能なテストケースは、lxmlのを使用して問題を解決することを縫い目次

>>> 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

です:

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

私も同じ問題を抱えていました。

)は

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

代わりの

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

soup.findAllを(試してみてください、私に適しています。

+0

soup.findAll( "label"、{"for": "Form_CompanyName"})のような他の要素でも動作します。 –

関連する問題