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