我在这里的第一篇文章,我试图找到这个特定html中的所有标签,我无法将它们拿出来,这就是代码:
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中有类的标签:“black”,我会错过什么吗?
谢谢, 韦德兰
答案 0 :(得分:2)
我也有同样的问题。
<强>尝试强>
soup.findAll("a",{"class":"black"})
而不是
soup.find_all("a",{"class":"black"})
soup.findAll()对我有用。
答案 1 :(得分: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
我得到一个空列表:[]
。
答案 2 :(得分:1)
这里的问题是网站的类标签与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()
''
答案 3 :(得分:0)
使用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"})