#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. Привет, я внес правку в вопросы, в основном это разные страницы. Я бы хотел извлечь все три из этих случаев.