在Python中,如何查找包含特定属性的元素?

时间:2019-01-01 23:26:29

标签: python python-3.x beautifulsoup html-parsing

我正在使用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”尝试失败。我想返回包含该属性的元素。

1 个答案:

答案 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>