Альтернативное решение
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>]
Если вы имеете дело с вложенными классами, попробуйте удалить внутренние нежелательные классы, используя разложить , а затем просто find_all('div')
for div in soup.find_all('div', class_=lambda x: x in classToIgnore):
div.decompose()
print(soup.find_all('div'))
Это может оставить некоторые дополнительные пробелы, но вы можете легко удалить их позже.