Получить текст и ребенка из диапазона с BeautifulSoup - PullRequest
0 голосов
/ 19 апреля 2020

Я нахожусь в определенной c ситуации, в которой я хочу извлечь текст и дочерний узел из диапазона:

<span>condition:<b>good</b></span>

Однако, когда я пытаюсь выбрать диапазон с текстом:

x = soup.find('span', text=re.compile(r'^condition:$'))

Я получаю None назад.

Я подтвердил, что этот тег существует в документе HTML, с которым я работаю.

И я могу Не могу понять, как получить внутренний тег.

Что я делаю не так?

Ответы [ 2 ]

0 голосов
/ 19 апреля 2020

Попробуйте следовать css селектор.

print(soup.select_one('span:contains("condition:")').text)

Код :

from bs4 import BeautifulSoup
html='''<span>condition:<b>good</b></span>'''
soup=BeautifulSoup(html,"html.parser")
print(soup.select_one('span:contains("condition:")').text)
0 голосов
/ 19 апреля 2020

Следующие имеют ту же проблему BeautifulSoup - поиск по тексту внутри тега

Вы можете разделить функцию для решения проблемы, например:

def find_all_with_regex(soup, target_tag, regex):
    elements = soup.find_all(target_tag)
    return list(filter(lambda tag_found: regex.match(tag_found.text), elements))

print(find_all_with_regex(soup, 'span', re.compile(r'^condition:.*')))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...