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或其他中没有正确格式化)
当前回答
在beautifulsoup源代码中,这一行允许在div中嵌套div;所以你对卢卡斯评论的担心是没有根据的。
NESTABLE_BLOCK_TAGS = ['blockquote', 'div', 'fieldset', 'ins', 'del']
我认为您需要做的是指定您想要的attrs,例如
source.find('div', attrs={'id':'articlebody'})
其他回答
soup.find("tagName",attrs={ "id" : "articlebody" })
我使用:
soup.findAll('tag', attrs={'attrname':"attrvalue"})
就像我的find/findall语法一样;也就是说,除非在标签和属性列表之间有其他可选参数,否则不应该有什么不同。
通过id查找元素:
div = soup.find(id="articlebody")
在我试图刮谷歌的时候也发生过。 我最终使用了pyquery。 安装:
pip install pyquery
Use:
from pyquery import PyQuery
pq = PyQuery('<html><body><div id="articlebody"> ... </div></body></html')
tag = pq('div#articlebody')
from bs4 import BeautifulSoup
from requests_html import HTMLSession
url = 'your_url'
session = HTMLSession()
resp = session.get(url)
# if element with id "articlebody" is dynamic, else need not to render
resp.html.render()
soup = bs(resp.html.html, "lxml")
soup.find("div", {"id": "articlebody"})