Html 如何一次按标记或类查找多个元素
有没有办法一次找到所有带有条件列表的标签 例如,在这个HTML中,我想提取Html 如何一次按标记或类查找多个元素,html,python-3.x,web-scraping,beautifulsoup,Html,Python 3.x,Web Scraping,Beautifulsoup,有没有办法一次找到所有带有条件列表的标签 例如,在这个HTML中,我想提取标记和标记 HTML <div> <h1>Chapter 1</h1> <p>aaa</p> <p>aaa</p> <p>aaa</p> <div> <h1>Section 1</h1>
标记和
标记
HTML
<div>
<h1>Chapter 1</h1>
<p>aaa</p>
<p>aaa</p>
<p>aaa</p>
<div>
<h1>Section 1</h1>
<p>bbb</p>
<p>bbb</p>
<p>bbb</p>
</div>
<div data-type="a">...</div>
<div data-type="a">...</div>
<div data-type="b">...</div>
...
</div>
但我想做一些类似的事情:
p_and_div_tags = soup.find_all(['p', 'div_tag_with_attribute'])
有办法吗
谢谢您可以尝试:
def func(标签):
在tag.name和tag.has_attr('data-type')中返回'div'
汤。全部找到(['p',func])
输出
<p>aaa</p>
<p>aaa</p>
<p>aaa</p>
<p>bbb</p>
<p>bbb</p>
<p>bbb</p>
<div data-type="a">...</div>
<div data-type="a">...</div>
[<p>aaa</p>,
<p>aaa</p>,
<p>aaa</p>,
<p>bbb</p>,
<p>bbb</p>,
<p>bbb</p>,
<div data-type="a">...</div>,
<div data-type="a">...</div>,
<div data-type="b">...</div>]
[aaa,
aaa,
aaa,
bbb,
bbb,
bbb,
...,
...,
...]
如果您拥有BS4.7.1或更高版本,则可以使用css选择器
代码:
from bs4 import BeautifulSoup
html='''<div>
<h1>Chapter 1</h1>
<p>aaa</p>
<p>aaa</p>
<p>aaa</p>
<div>
<h1>Section 1</h1>
<p>bbb</p>
<p>bbb</p>
<p>bbb</p>
</div>
<div data-type="a">...</div>
<div data-type="a">...</div>
<div data-type="b">...</div>
...
</div>'''
soup=BeautifulSoup(html,'html.parser')
items=soup.select('p,div[data-type="a"]')
print(items)
[<p>aaa</p>, <p>aaa</p>, <p>aaa</p>, <p>bbb</p>, <p>bbb</p>, <p>bbb</p>, <div data-type="a">...</div>, <div data-type="a">...</div>]
从bs4导入美化组
html=“”
第一章
aaa
aaa
aaa
第一节
bbb
bbb
bbb
...
...
...
...
'''
soup=BeautifulSoup(html,'html.parser')
items=soup.select('p,div[data type=“a”]”)
打印(项目)
输出:
from bs4 import BeautifulSoup
html='''<div>
<h1>Chapter 1</h1>
<p>aaa</p>
<p>aaa</p>
<p>aaa</p>
<div>
<h1>Section 1</h1>
<p>bbb</p>
<p>bbb</p>
<p>bbb</p>
</div>
<div data-type="a">...</div>
<div data-type="a">...</div>
<div data-type="b">...</div>
...
</div>'''
soup=BeautifulSoup(html,'html.parser')
items=soup.select('p,div[data-type="a"]')
print(items)
[<p>aaa</p>, <p>aaa</p>, <p>aaa</p>, <p>bbb</p>, <p>bbb</p>, <p>bbb</p>, <div data-type="a">...</div>, <div data-type="a">...</div>]
[aaa,aaa,aaa,bbb,bbb,bbb,…,…]