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

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

soup.prettify()

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

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


当前回答

下面是一个代码片段

soup = BeautifulSoup(:"index.html")
titleList = soup.findAll('title')
divList = soup.findAll('div', attrs={ "class" : "article story"})

正如你所看到的,我找到了所有的标签,然后我找到了所有的标签class="article"在里面

其他回答

通过id查找元素:

div = soup.find(id="articlebody")
soup.find("tagName",attrs={ "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"在里面

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

pip install pyquery

Use:

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