【发布时间】:2019-01-05 17:46:52
【问题描述】:
我想使用 BeautifulSoup 从网站下载文件。为了检索 URL,我需要访问带有 download 属性的 a 标记。我知道我可以通过将dict 传递给BeautifulSoup.find 或BeautifulSoup.find_all 来按属性过滤标签,但我不知道如何处理不包含值的属性。我该怎么做?
【问题讨论】:
标签: python beautifulsoup
我想使用 BeautifulSoup 从网站下载文件。为了检索 URL,我需要访问带有 download 属性的 a 标记。我知道我可以通过将dict 传递给BeautifulSoup.find 或BeautifulSoup.find_all 来按属性过滤标签,但我不知道如何处理不包含值的属性。我该怎么做?
【问题讨论】:
标签: python beautifulsoup
您的问题已经有了关于 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>]
【讨论】: