Как искать текст, исключая html-теги, но возвращая соответствующий html

#python #regex #beautifulsoup

#питон #регулярное выражение #прекрасный суп

Вопрос:

У меня есть несколько веб-страниц, с содержанием которых я знаком, но не совсем понимаю структуру самой страницы, так что веб-страницы могут быть в следующем виде
Страница 1

 lt;stronggt; Some textlt;/stronggt; I'm interested in lt;pgt; searching lt;/pgt;  

Страница 2

 lt;bgt; Some text I'm interested in lt;/bgt; searching  

Страница 3

 lt;divgt;lt;pgt; Some text I'm interested in searching and this is some other textlt;/pgt;lt;/divgt;  

Возможно ли без написания сложного регулярного выражения выполнить поиск по странице и поиск подстроки, а затем также получить заключающий html? Прямо сейчас я просто извлекаю текст и выполняю поиск по подстроке, но я бы дополнительно хотел вернуть html. Был бы способ использовать Beautifulsoup это для достижения этой цели?

 html = urllib.request.urlopen('path').read().decode('utf-8') soup = BeautifulSoup(html, 'html.parser') text = soup.get_text() result = re.search(text, "Some text I'm interested in searching", re.I)  

Таким образом, вывод со страницы 1 я могу извлечь (как показано выше)

 lt;stronggt; Some textlt;/stronggt; I'm interested in lt;pgt; searching lt;/pgt;  

и так далее..

Ответ №1:

Вы можете попробовать поиск с regex помощью и beautifulsoup :

 import bs4 import re  html = """lt;stronggt; Some textlt;/stronggt; I'm interested in lt;pgt; searching lt;/pgt; lt;bgt; Some text I'm interested in lt;/bgt; searching lt;divgt;lt;pgt; Some text I'm interested in searching and this is some other textlt;/pgt;lt;/divgt;"""  soup = bs4.BeautifulSoup(html) soup.find(text=re.compile("Some text I'm interested in searching")).parent  

Выход

 lt;pgt; Some text I'm interested in searching and this is some other textlt;/pgt;  

Комментарии:

1. Привет, я внес правку в вопросы, в основном это разные страницы. Я бы хотел извлечь все три из этих случаев.