BeautifulSoup4:选择属性不等于 x 的元素

Posted

技术标签:

【中文标题】BeautifulSoup4:选择属性不等于 x 的元素【英文标题】:BeautifulSoup4: select elements where attributes are not equal to x 【发布时间】:2014-07-10 23:22:04 【问题描述】:

我想做这样的事情:

soup.find_all('td', attrs!="class":"foo")

我想找到所有不属于 foo 类的 td。 显然以上都行不通,怎么办?

【问题讨论】:

@alecxe 是的,谢谢。 【参考方案1】:

BeautifulSoup 确实让“汤”既美观又易于使用。

属性值中你can pass a function:

soup.find_all('td', class_=lambda x: x != 'foo')

演示:

>>> from bs4 import BeautifulSoup
>>> data = """
... <tr>
...     <td>1</td>
...     <td class="foo">2</td>
...     <td class="bar">3</td>
... </tr>
... """
>>> soup = BeautifulSoup(data)
>>> for element in soup.find_all('td', class_=lambda x: x != 'foo'):
...     print element.text
... 
1
3

【讨论】:

【参考方案2】:

有一个方法 .select() 允许你将 CSS 选择器作为字符串传递:

soup.select('td:not(.foo)')

上面的代码将返回所有不属于foo类的&lt;td&gt;标签。

【讨论】:

以上是关于BeautifulSoup4:选择属性不等于 x 的元素的主要内容,如果未能解决你的问题,请参考以下文章

Python3 爬虫U11_BeautifulSoup4之select和CCS选择器提取元素

jQuery 属性等于选择器不适用于自定义属性

SQL 从表中选择条目,其中属性等于参数,否则选择 * 条目

如何从 BeautifulSoup4 中的 html 标签中找到特定的数据属性?

Beautifulsoup4

jQuery--属性选择器