«Как найти всех a
, которые являются детьми <li class=test>
, но не других?»
Учитывая приведенный ниже HTML (я добавил еще <a>
, чтобы показать разницу между select
и select_one
):
<div>
<li class="test">
<a>link1</a>
<ul>
<li>
<a>link2</a>
</li>
</ul>
<a>link3</a>
</li>
</div>
Решение состоит в том, чтобы использовать дочерний комбинатор (>
), который помещается между двумя селекторами CSS:
>>> soup.select('li.test > a')
[<a>link1</a>, <a>link3</a>]
Если вы хотите найти только первого ребенка:
>>> soup.select_one('li.test > a')
<a>link1</a>