蟒蛇BeautifulSoup搜索标签
问题描述:
我的第一篇文章在这里,我试图找到这个特定的HTML所有标签,我不能把他们救出来,这是代码:蟒蛇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中有类标签:“黑色”,我错过了什么?
感谢, 韦德兰
答
这似乎为我工作,所以我会说,这个问题是与你的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
而且我得到了一个空的列表作为结果:[]
。
答
这里的问题是,网站的类标记没有用空格与href属性值的末尾分开。 BeautifulSoup似乎不能很好地处理这个问题。一个可再现的测试案例是以下
>>> 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()
''
答
它煤层,使用lxml的解决了这个问题:
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"})
答
我也有同样的问题。
尝试的
soup.findAll("a",{"class":"black"})
代替
soup.find_all("a",{"class":"black"})
soup.findAll()很适合我。
+0
也适用于其他元素,如:soup.findAll(“label”,{“for”:“Form_CompanyName”}) – 2017-05-16 15:57:27
你使用的是什么python版本/库版本/ os? – fabrizioM 2012-03-31 14:45:42