我想找到所有<h1>
或<div class='abc'>
的标签。我尝试了bs.find_all(['h1', 'div'], attrs={'class': 'abc'})
,但是它将忽略<h1>
标签:显然,attrs
参数将AND条件应用于搜索(这意味着标签必须属于标签名称列表,并且具有给定的属性,<h1>
标签不符合)。
有人可以为此提出建议吗?谢谢。
答案 0 :(得分:3)
也许您可以使用select。
from bs4 import BeautifulSoup as bs
from io import StringIO
data = """<html>
<body>
<h1>Test 1</h1>
<h2>Test 2</h2>
<div class='abc'><p>Test 3</p></div>
</body>
</html>"""
soup = bs(StringIO(data), 'html.parser')
print(soup.select('h1,div[class="abc"]'))
print(soup.find_all(['h1', 'div'], attrs={'class' : 'abc'}))
输出
[<h1>Test 1</h1>, <div class="abc"><p>Test 3</p></div>]
[<div class="abc"><p>Test 3</p></div>]
答案 1 :(得分:0)
如何将两个bs.find_all('h1') + bs.find_all(['div', attrs={'class': 'abc'})
之类的结果串联起来?