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

时间:2014-05-22 04:51:51

标签: python html python-2.7 beautifulsoup html-parsing

我想做这样的事情:

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

我想找到所有没有foo类的td。
显然上面没有用,有什么用?

2 个答案:

答案 0 :(得分:18)

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

答案 1 :(得分:0)

有一种方法.select(),它允许您将CSS选择器作为字符串传递:

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

以上代码将返回所有<td>类之外的所有foo标签。