nixbox
@nixbox

Beautiful soup: как найти html элемент, содержащий определенную строку, если тег заранее не известен?

Здравствуйте.
Требуется найти элемент, содержащий строку.
Сейчас код выглядит так:

html_page = urlopen(page_link)
soup = BeautifulSoup(html_page, "html.parser")
			
for tag in soup.find_all():
    if 'string' in tag.text:
       print(tag.text)


Проблема в том что такой подход возвращает все теги, содержащие строку включая все родительские начиная с body.
Как можно получить только тег непосредственно содержащий строку без родительских элементов?

Задача поиска элемента: возможность в дальнейшем переходить на дочерние и родительские элементы.
Может быть вы сможете подсказать другие способы, без использования Beautiful soup?

Спасибо.
  • Вопрос задан
  • 8610 просмотров
Решения вопроса 1
nixbox
@nixbox Автор вопроса
Как писал Антон, Beautiful soup находит только строку.
Возможности поиска строки без указания тега и манипуляции с ним нет.

Для решения своей задачи я прописал отдельные функции поска для всех возможных тегов.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
AnnTHony
@AnnTHony
Интроверт
import re

soup.find_all('название тега', string=re.compile('искомая строка'))
# или
soup.find_all('название тега', text=re.compile('искомая строка'))
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы