我想找到所有<h1>
或<div class='abc'>
的标签。我尝试了bs.find_all(['h1', 'div'], attrs={'class': 'abc'})
,但这将忽略<h1>
标签:显然,attrs
参数将 AND 条件应用于搜索(这意味着标签必须属于标签名称列表并具有给定的属性,<h1>
标签不满足(。
任何人都可以建议解决此问题吗?谢谢。
也许你可以使用 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>]
像bs.find_all('h1') + bs.find_all(['div', attrs={'class': 'abc'})
这样连接两个结果怎么样?