Как выбрать из div ссылки у которых есть тег strong?

Например

<a href="https://">Какая то ссылка <strong>(0)</strong></a>

ссылки которые не имеют в себе strong не нужны.


Ответы (1 шт):

Автор решения: gil9red

Варианты:

  1. Можно через css-селектор задать условие, чтобы выборка была для тех <a>, у которых есть вложенный <strong>: a:has(strong)
  2. Или запросить все <a>, а у них проверить наличие вложенного <strong>

Пример:

from bs4 import BeautifulSoup

html = """
<div>
    <a href="https://">Какая то ссылка <strong>(0)</strong></a>
    <a href="https://">Какая то ссылка (1)</a>
    <div>
        <a href="https://">Какая то ссылка <strong>(2)</strong></a>
    </div>
</div>
"""
root = BeautifulSoup(html, 'html.parser')

for a in root.select('a:has(strong)'):
    print(a)
# <a href="https://">Какая то ссылка <strong>(0)</strong></a>
# <a href="https://">Какая то ссылка <strong>(2)</strong></a>

print()

for a in root.select('a'):
    if a.strong is None:
        continue
    print(a)
# <a href="https://">Какая то ссылка <strong>(0)</strong></a>
# <a href="https://">Какая то ссылка <strong>(2)</strong></a>
→ Ссылка