小编sto*_*ney的帖子

BeautifulSoup:查找类名:AND + NOT

我在 HTML 中有两组不同的 div 标签:

<div class="ABC BCD CDE123">

<div class="ABC BCD CDE234">

<div class="ABC BCD CDE345">
Run Code Online (Sandbox Code Playgroud)

<div class="ABC XYZ BCD">
Run Code Online (Sandbox Code Playgroud)

我想选择其中包含 ABC 和 BCD 的所有标签,但不包含 BeautifullSoup4 的 XYZ 类。

我已经知道这种方法:

soup.find_all('div', class_=['ABC','BCD'])
Run Code Online (Sandbox Code Playgroud)

其搜索为OR (因此 ABC 或 BCD 必须存在)。

我也知道这里的这种方法:

def myfunction(theclass):
    return theclass is not None and len(theclass)=5
soup.find_all('div', class_=myfunction)
Run Code Online (Sandbox Code Playgroud)

这将返回类名长度为 5 的所有 div

然后我尝试用这个来解决我的问题:

soup.find_all('div', class_ = lambda x: x and 'ABC' and 'BCD' in x.split() and x and 'XYZ' not in x.split())
Run Code Online (Sandbox Code Playgroud)

但这不起作用。所以我尝试用这种方法来调试它:

def myfunction(theclass): …
Run Code Online (Sandbox Code Playgroud)

html python beautifulsoup

6
推荐指数
1
解决办法
1万
查看次数

标签 统计

beautifulsoup ×1

html ×1

python ×1