Как найти элемент на основе текста, игнорировать дочерние теги в beautifulsoup - PullRequest
0 голосов
/ 22 мая 2018

Я ищу решение, использующее Python и BeautifulSoup, чтобы найти элемент, основанный на внутреннем тексте.Например:

<div> <b>Ignore this text</b>Find based on this text </div>

Как мне найти этот div?Спасибо за помощь!

Ответы [ 2 ]

0 голосов
/ 22 мая 2018

Вы можете использовать .find с аргументом text, а затем использовать findParent для родительского элемента.

Пример:

from bs4 import BeautifulSoup
s="""<div> <b>Ignore this text</b>Find based on this text </div>"""
soup = BeautifulSoup(s, 'html.parser')
t = soup.find(text="Find based on this text ") 
print(t.findParent())

Выход:

<div> <b>Ignore this text</b>Find based on this text </div>
0 голосов
/ 22 мая 2018

попробуйте, это как пример, но работает

from bs4 import BeautifulSoup
html="""
<div> <b>Ignore this text</b>Find based on this text </div>
"""

soup = BeautifulSoup(html, 'lxml')                                                                                                                                                

s = soup.find('div')

for child in s.find_all('b'):
    child.decompose()

print(s.get_text())

Вывод

 Find based on this text 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...