匹配多个 CSS 类

Match multiple CSS classes

是否有select表达式来匹配多个类标签?

考虑以下 HTML 片段:

<div id="top">
    <div class="foo bar"></div>
</div>

我可以将它与 soup.select('div#top div.foo')soup.select('div#top div.bar') 匹配。

但我需要两个 类 才能到场。

有表达方式吗?

根据 CSS Spec,以下规则匹配任何 div 元素,其 class 属性已分配 space 分隔值列表,其中包括 foobar:

div.foo.bar

BeautifulSoup 也遵循这个规范,所以你可以使用:

soup.select('div#top div.foo.bar')

您可以链接 class select 或者。 .foo.bar 表示只有 select 个元素同时具有 class foo 和 class bar

soup.select('div#top div.foo.bar')