让我们假设我们有一个属性值“ xyz”,而不知道属性名称。这意味着我们可以匹配
<a href="xyz">
而且
<div class="xyz">
是否可以搜索此类标签?
答案 0 :(得分:2)
一种解决方案是在c
函数中使用lambda
。
示例:
find_all
打印:
data = '''<a href="xyz">a</a>
<div class="somethingelse">b</div>
<div class="xyz">c</div>'''
from bs4 import BeautifulSoup
soup = BeautifulSoup(data, 'html.parser')
for tag in soup.find_all(lambda tag: any('xyz' in tag[a] for a in tag.attrs)):
print(tag)
答案 1 :(得分:0)
[tag for tag in soup.find_all(True)
if "xyz" in tag.attrs.values() or ["xyz"] in tag.attrs.values()]
说明:
soup.find_all(True)
查找所有标签(因为True
代表每个评估为True
的标签)。
tag.attrs
是tag
的所有属性的字典。
href
,class
,id
)不感兴趣,仅对它们的值感兴趣-因此我们使用tag.attrs.values()
。class="x y"
),因此它们在attrs
词典中的值是一个列表(例如["x", "y"]
)。因此,我们同时测试了"xyz"
和["xyz"]
的可能性。