我有一个网页来源,里面有很多div和各自的id。
例如:
<div id="abc_answer">Some content</div>
<div id="abcd_answer">Some content</div>
<div id="ggg">Some Content</div>
我想只提取在所有给定div的id中具有“_answer”子字符串的信息。我想用beautifulsoup
做这件事答案 0 :(得分:3)
一种选择是使用.select()
method并传入attribute selector [id$=_answer]
,这将选择id
属性值以子字符串_answer
结尾的元素:
soup.select('div[id$=_answer]')
输出:
> [<div id="abc_answer">Some answer</div>, <div id="abcd_answer">Some answer</div>]
答案 1 :(得分:3)
以下是解决方案:
bsObj = BeautifulSoup(some.text, "html.parser");
found = bsObj.findAll("div", id=lambda x: x and x.endswith('_answer'))
答案 2 :(得分:0)
您可以将函数传递给可以进行任何检查的find_all
:
soup.find_all(lambda tag: tag.name=='div' \
and tag.has_attr('id') \
and tag['id'].endswith("_answer")))
#[<div id="abc_answer">Some content</div>,
# <div id="abcd_answer">Some content</div>]
确保在查看其值之前检查id
是否存在。