在 Python 中,如何找到包含特定属性的元素?
In Python, how do I find elements that contain a specific attribute?
我正在使用 Python 3.7。我想在我的 HTML 页面中找到所有具有属性 "data-permalink" 的元素,而不管其值是什么,即使值为空。但是,我对如何执行此操作感到困惑。我正在使用 bs4 包并尝试了以下
soup = BeautifulSoup(html)
soup.findAll("data-permalink")
[]
soup.findAll("a")
[<a href=" ... </a>]
soup.findAll("a.data-permalink")
[]
该属性通常只能在我页面上的锚标记中找到,因此我 "a.data-permalink" 尝试未成功。我想 return 包含该属性的元素。
您的select或无效
soup.findAll("a.data-permalink")
它应该用于方法 .select()
但它仍然无效,因为它意味着 select <a>
class 而不是属性。
要匹配所有内容,请将 *
用于 select()
.select('*[data-permalink]')
或 True
如果使用 findAll()
.findAll(True, attrs={'data-permalink' : True})
例子
from bs4 import BeautifulSoup
html = '''<a data-permalink="a">link</a>
<b>bold</b>
<i data-permalink="i">italic</i>'''
soup= BeautifulSoup(html, 'html.parser')
permalink = soup.select('*[data-permalink]')
# or
# permalink = soup.findAll(True, attrs={'data-permalink' : True})
print(permalink)
结果,<b>
元素被跳过
[<a data-permalink="a">link</a>, <i data-permalink="i">italic</i>]
我正在使用 Python 3.7。我想在我的 HTML 页面中找到所有具有属性 "data-permalink" 的元素,而不管其值是什么,即使值为空。但是,我对如何执行此操作感到困惑。我正在使用 bs4 包并尝试了以下
soup = BeautifulSoup(html)
soup.findAll("data-permalink")
[]
soup.findAll("a")
[<a href=" ... </a>]
soup.findAll("a.data-permalink")
[]
该属性通常只能在我页面上的锚标记中找到,因此我 "a.data-permalink" 尝试未成功。我想 return 包含该属性的元素。
您的select或无效
soup.findAll("a.data-permalink")
它应该用于方法 .select()
但它仍然无效,因为它意味着 select <a>
class 而不是属性。
要匹配所有内容,请将 *
用于 select()
.select('*[data-permalink]')
或 True
如果使用 findAll()
.findAll(True, attrs={'data-permalink' : True})
例子
from bs4 import BeautifulSoup
html = '''<a data-permalink="a">link</a>
<b>bold</b>
<i data-permalink="i">italic</i>'''
soup= BeautifulSoup(html, 'html.parser')
permalink = soup.select('*[data-permalink]')
# or
# permalink = soup.findAll(True, attrs={'data-permalink' : True})
print(permalink)
结果,<b>
元素被跳过
[<a data-permalink="a">link</a>, <i data-permalink="i">italic</i>]