PIPIONE
为什么不创建一个辅助函数?bs4 允许您在使用find_all()a function as filter搜索树时指定。从文档:如果其他匹配项都不适合您,请定义一个将元素作为唯一参数的函数。True 如果参数匹配,则函数应返回,False否则返回。问题是我们不能传递任何其他参数(在这种情况下是有效类的列表)。我们可以通过使用包装函数来动态创建过滤器来克服这个问题。def create_filter(tag_name, class_list): def class_filter(tag): return ( tag.name == tag_name and set(tag.get('class', [])) == set(class_list) ) return class_filter让我们看看这在 @AndrejKesely 的示例 html 上是如何工作的。仅有的alphaprint(soup.find_all(create_filter('div', ['alpha'])))输出[<div class="alpha">1</div>, <div class="alpha">2</div>, <div class="alpha">3</div>, <div class="alpha">8</div>]只有alpha和bethaprint(soup.find_all(create_filter('div', ['alpha', 'betha'])))输出[<div class="alpha betha">4</div>, <div class="betha alpha">5</div>]