BeautifulSoup:查找具有特定属性而非值的所有标签

时间:2019-01-05 17:46:52

标签: python beautifulsoup

我想使用BeautifulSoup从网站下载文件。为了检索URL,我需要访问带有a属性的download标记。我知道我可以通过将dict传递到BeautifulSoup.findBeautifulSoup.find_all来按属性过滤标签,但是我不知道如何处理不包含值的属性。我该怎么办?

1 个答案:

答案 0 :(得分:1)

您的问题已经有关于SO的答案。我只想回答应该为空还是模式的情况

from bs4 import BeautifulSoup
import re
html="""
<div>
<p data="123"></p>
<p data="567"></p>
<p data=""></p>
</div>
"""
soup = BeautifulSoup(html,'lxml')
# get all tags with that attribute
p_list=soup.findAll("p", data=True)
print(p_list)
# get  all tags with attribute value either empty or a particular pattern
p_list=soup.findAll("p", {"data":re.compile("^$|123")})
print(p_list)

输出

[<p data="123"></p>, <p data="567"></p>, <p data=""></p>]
[<p data="123"></p>, <p data=""></p>]