soup.find("tagName", { "id" : "articlebody" })

为什么不返回<div id="articlebody">…</div>标签和东西之间?它什么也不返回。我知道它的存在因为我正盯着它

soup.prettify()

汤。Find ("div", {"id": "articlebody"})也不起作用。

(编辑:我发现BeautifulSoup没有正确解析我的页面,这可能意味着我试图解析的页面在SGML或其他中没有正确格式化)


当前回答

通过id查找元素:

div = soup.find(id="articlebody")

其他回答

我认为'div'标签嵌套太多是有问题的。我试图从facebook html文件解析一些联系人,Beautifulsoup无法找到带有类“fcontent”的标签“div”。

其他类也会发生这种情况。当我搜索div时,它只搜索那些嵌套不多的div。

html源代码可以是任何页面从facebook的朋友列表的一个朋友的你(不是你的一个朋友)。如果有人能测试它并给出一些建议,我会非常感激。

这是我的代码,我只是试图用类“fcontent”打印标签“div”的数量:

from BeautifulSoup import BeautifulSoup 
f = open('/Users/myUserName/Desktop/contacts.html')
soup = BeautifulSoup(f) 
list = soup.findAll('div', attrs={'class':'fcontent'})
print len(list)
soup.find("tagName",attrs={ "id" : "articlebody" })

你应该发布你的示例文档,因为代码运行良好:

>>> import BeautifulSoup
>>> soup = BeautifulSoup.BeautifulSoup('<html><body><div id="articlebody"> ... </div></body></html')
>>> soup.find("div", {"id": "articlebody"})
<div id="articlebody"> ... </div>

找到<div>s内<div>s工作以及:

>>> soup = BeautifulSoup.BeautifulSoup('<html><body><div><div id="articlebody"> ... </div></div></body></html')
>>> soup.find("div", {"id": "articlebody"})
<div id="articlebody"> ... </div>

在我试图刮谷歌的时候也发生过。 我最终使用了pyquery。 安装:

pip install pyquery

Use:

from pyquery import PyQuery    
pq = PyQuery('<html><body><div id="articlebody"> ... </div></body></html')
tag = pq('div#articlebody')

通过id查找元素:

div = soup.find(id="articlebody")