BeautifulSoup4:选择属性不等于x的元素
我想做这样的事情:
soup.find_all('td', attrs!={"class":"foo"})
我想找到所有没有类名为 foo 的 td 标签。
显然,上面的写法不行,那该怎么写呢?
2 个回答
4
有一个方法叫做 .select()
,它可以让你把CSS选择器作为字符串传进去:
soup.select('td:not(.foo)')
上面的代码会返回所有不属于 foo
类的 <td>
标签。
26
BeautifulSoup
真的让“汤”变得美丽且易于使用。
你可以在属性值中 传递一个函数:
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