python BeautifulSoup搜索标记

python BeautifulSoup搜索标记,python,beautifulsoup,Python,Beautifulsoup,我在这里的第一篇文章,我试图找到这个特定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中的所有标记,但我无法将它们取出,代码如下:

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"})
find函数返回[],但我看到html中有class为“black”的标记,我是否遗漏了什么

谢谢,
Vedran

它似乎适合我,所以我认为问题在于您的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"}))
从bs4导入美化组
html_doc=“”
已经指出,问题可能是您正在获取的html中的属性之间缺少空白

例如,我尝试将上面的示例更改为:

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

# etc.. as before
html_doc=”“”
#等等。。一如既往

结果我得到了一个空列表:
[]

这里的问题是网站的类标记没有用空格与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()对我来说很好。

您使用的python版本/库版本/操作系统是什么?还可以与其他元素一起使用,例如:soup.findAll(“label”,{“for”:“Form_CompanyName”})
soup.find_all("a",{"class":"black"})