Задать вопрос
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?

Спасибо.
  • Вопрос задан
  • 8732 просмотра
Подписаться 1 Простой Комментировать
Помогут разобраться в теме Все курсы
  • Яндекс Практикум
    Python-разработчик
    10 месяцев
    Далее
  • Skillfactory
    Профессия Python-разработчик
    9 месяцев
    Далее
  • Хекслет
    Python-разработчик
    10 месяцев
    Далее
  • SF Education
    Бэкенд-разработчик на Python
    3 месяца
    Далее
  • Stepik
    Программа курсов: Бэкенд-разработка на Python
    1 месяц
    Далее
  • Merion Academy
    Python программист с нуля
    4 месяца
    Далее
  • Skypro
    Python-разработчик с нуля
    9 месяцев
    Далее
  • Нетология
    Fullstack-разработчик на Python + нейросети
    20 месяцев
    Далее
Решения вопроса 1
nixbox
@nixbox Автор вопроса
Как писал Антон, Beautiful soup находит только строку.
Возможности поиска строки без указания тега и манипуляции с ним нет.

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

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

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

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