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
类的<td>
标签。
【讨论】:
以上是关于BeautifulSoup4:选择属性不等于 x 的元素的主要内容,如果未能解决你的问题,请参考以下文章
Python3 爬虫U11_BeautifulSoup4之select和CCS选择器提取元素
SQL 从表中选择条目,其中属性等于参数,否则选择 * 条目