В Beautifulsoup я получаю список divs
. Каждый из этих div включает span
:
<div role="news_item" class="ni_nav_9tg">
<span class="nav_element_new_S5g">Germany vs. Japan</span>
</div>
...
<div role="news_item" class="ni_nav_9tg">
<span class="nav_element_new_S5g">Brasil vs. Serbia</span>
</div>
Я хочу проверить, существует ли в этом списке div
span
, чей class
содержит строку "new". В результате просто true
или false
.
Конечно, я мог бы перебрать каждый элемент div
в списке и получить элемент span
после этой проверки, если class
содержит строку "новая", но я не уверен, что это правильный подход.
1 ответ
Вы можете выбрать их напрямую, например:
soup.select('div[role="news_item"]:has(span[class*="new"])')
Чтобы получить True
или False
, проверьте len()
ResultSet
:
len(soup.select('div[role="news_item"]:has(span[class*="new"])')) > 0
Примере
from bs4 import BeautifulSoup
html='''
<div role="news_item" class="ni_nav_9tg">
<span class="nav_element_new_S5g">Germany vs. Japan</span>
</div>
...
<div role="news_item" class="ni_nav_9tg">
<span class="nav_element_new_S5g">Brasil vs. Serbia</span>
</div>
'''
soup = BeautifulSoup(html)
len(soup.select('div[role="news_item"]:has(span[class*="new"])')) > 0
Похожие вопросы
Новые вопросы
python
Python — это мультипарадигмальный многоцелевой язык программирования с динамической типизацией. Он предназначен для быстрого изучения, понимания и использования, а также обеспечивает чистый и унифицированный синтаксис. Обратите внимание, что Python 2 официально не поддерживается с 01.01.2020. Если у вас есть вопросы о версии Python, добавьте тег [python-2.7] или [python-3.x]. При использовании варианта Python (например, Jython, PyPy) или библиотеки (например, Pandas, NumPy) укажите это в тегах.