我在 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)