我正在使用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”尝试失败。我想返回包含该属性的元素。
答案 0 :(得分:0)
您的选择器无效
@Override
public String toString()
{
return this.name;
}
应将其用于方法soup.findAll("a.data-permalink")
,但仍然无效,因为它意味着选择.select()
而不是属性。
要匹配所有内容,请对<a>
使用*
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>