2015-06-24 2 views
-1

Есть ли выражение для соответствия меток с несколькими классами?Совпадение нескольких классов CSS

Рассмотрим следующий фрагмент кода HTML:

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

Я мог бы соответствовать его soup.select('div#top div.foo') или soup.select('div#top div.bar').

Но мне нужно, чтобы оба класса были там.

Есть ли выражение для этого?

ответ

2

Вы можете цеплять селекторы классов. .foo.bar означает выбрать только элементы с обоих классов foo и класса bar

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

Согласно CSS Spec, следующее правило соответствует любому div элемент, class атрибут был назначен список разделенных пробелами значений, которые включают foo и bar:

div.foo.bar 

BeautifulSoup также следует этой спецификации, так что вы могут использоваться:

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

Кстати ... это [право в документации] (http://www.crummy.com/software/BeautifulSoup/bs4/doc/# поиск-по-CSS-класс) – rnevius

Смежные вопросы