С помощью BeautifulSoup как получить доступ к <li>
, у которого есть определенный div
дочерний элемент?
Пример: Как получить доступ к тексту (например, info@blah.com) li
, в котором Email
является дочерним элементом div?
<li>
<div>Country</div>
Germany
</li>
<li>
<div>Email</div>
info@blah.com
</li>
Я пытался сделать это вручную: зацикливание на всех li
и для каждого из них повторное зацикливание на всех дочерних div
, чтобы проверить, является ли текст Email и т. д., но я уверен, что существует более умная версия с BeautifulSoup.
3 ответа
Есть несколько способов решения проблемы.
Один из вариантов - найти Email
div по тексту и получить следующий брат:
soup.find("div", text="Email").next_sibling.strip() # prints "info@blah.com"
Если у вас есть только один div с содержимым «Электронная почта», вы можете сделать это так.
soup.find("div", text="Email").find_parent('li')
Ваш вопрос о том, чтобы получить всю <li>
часть, которая имеет "Email" внутри тега <div>
, верно? Это означает, что вам нужно получить следующий результат,
<li>
<div>Email</div>
info@blah.com
</li>
Если я правильно понимаю ваш вопрос, значит, вам нужно сделать следующее.
soup.find("div", text="Email").parent
Или если вам нужен "info@blah.com" в качестве результата, вам нужно сделать следующее.
soup.find("div", text="Email").next_sibling
Похожие вопросы
Новые вопросы
python
Python - это многопарадигмальный, динамически типизированный, многоцелевой язык программирования. Он разработан для быстрого изучения, понимания и использования, а также для обеспечения чистого и единообразного синтаксиса. Обратите внимание, что Python 2 официально не поддерживается с 01.01.2020. Тем не менее, для вопросов о Python, связанных с версией, добавьте тег [python-2.7] или [python-3.x]. При использовании варианта Python (например, Jython, PyPy) или библиотеки (например, Pandas и NumPy) включите его в теги.