soup.find("tagName", { "id" : "articlebody" })
为什么不返回<div id="articlebody">…</div>标签和东西之间?它什么也不返回。我知道它的存在因为我正盯着它
soup.prettify()
汤。Find ("div", {"id": "articlebody"})也不起作用。
(编辑:我发现BeautifulSoup没有正确解析我的页面,这可能意味着我试图解析的页面在SGML或其他中没有正确格式化)
soup.find("tagName", { "id" : "articlebody" })
为什么不返回<div id="articlebody">…</div>标签和东西之间?它什么也不返回。我知道它的存在因为我正盯着它
soup.prettify()
汤。Find ("div", {"id": "articlebody"})也不起作用。
(编辑:我发现BeautifulSoup没有正确解析我的页面,这可能意味着我试图解析的页面在SGML或其他中没有正确格式化)
当前回答
soup.find("tagName",attrs={ "id" : "articlebody" })
其他回答
很可能是因为默认的beautifulsoup解析器有问题。换一个不同的解析器,比如'lxml',然后再试一次。
我认为'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)
Id属性总是唯一标识的。这意味着您甚至不需要指定元素就可以直接使用它。因此,如果您的元素有它来解析内容,这是一个加分项。
divEle = soup.find(id = "articlebody")
在beautifulsoup源代码中,这一行允许在div中嵌套div;所以你对卢卡斯评论的担心是没有根据的。
NESTABLE_BLOCK_TAGS = ['blockquote', 'div', 'fieldset', 'ins', 'del']
我认为您需要做的是指定您想要的attrs,例如
source.find('div', attrs={'id':'articlebody'})
下面是一个代码片段
soup = BeautifulSoup(:"index.html")
titleList = soup.findAll('title')
divList = soup.findAll('div', attrs={ "class" : "article story"})
正如你所看到的,我找到了所有的标签,然后我找到了所有的标签class="article"在里面