2024-05-13 06:35:24 发布
网友
正如在this question中所讨论的那样,可以很容易地获得具有特定类的所有div。但是在这里,我有一个要排除的类的列表&希望得到列表中没有给定任何类的所有div。你知道吗
div
例如
classToIgnore = ["class1", "class2", "class3"]
现在,我们要获取所有不包含上述列表中提到的类的div。我怎样才能做到这一点?你知道吗
使用CSS选择器,尝试以下操作:
divs = soup.select("div:not('.class1, .class2, .class3')")
替代解决方案
soup.find_all('div', class_=lambda x: x not in classToIgnore)
示例
from bs4 import BeautifulSoup html = """ <div class="c1"></div> <div class="c1"></div> <div class="c2"></div> <div class="c3"></div> <div class="c4"></div> """ soup = BeautifulSoup(html, 'html.parser') classToIgnore = ["c1", "c2"] print(soup.find_all('div', class_=lambda x: x not in classToIgnore))
输出
[<div class="c3"></div>, <div class="c4"></div>]
如果您正在处理嵌套类,那么请尝试使用decompose删除内部不需要的类,然后只使用find_all('div')
find_all('div')
for div in soup.find_all('div', class_=lambda x: x in classToIgnore): div.decompose() print(soup.find_all('div'))
这可能会留下一些额外的空间,但你可以很容易地剥离后。你知道吗
使用CSS选择器,尝试以下操作:
参考
替代解决方案
示例
输出
如果您正在处理嵌套类,那么请尝试使用decompose删除内部不需要的类,然后只使用
find_all('div')
这可能会留下一些额外的空间,但你可以很容易地剥离后。你知道吗
相关问题 更多 >
编程相关推荐