Python: лучший способ поиска и сбора текстовых строк из HTML. Удалите уценки, теги и т. Д.
Есть много модулей, таких как lxml, Beautiful soup, nltk и pyenchant для правильной фильтрации правильных английских слов. Но тогда какой самый чистый кратчайший путь, как предлагает html2text, также, если уценки также могут быть удалены (хотя я пишу, справа есть множество возможных похожих вопросов) Может быть универсальное регулярное выражение, которое может убрать все html теги?
def word_parse(f):
raw = nltk.clean_html(f) #f = url.content here, from "requests" module
regex = r'[a-zA-Z]+' # | ^[a-zA-Z]+\b'
match = re.compile(regex)
ls = []
for line in raw.split():
for mat in line.split():
try:
v = match.match(mat).group()
map(ls.append, v.split())
except AttributeError, e:
pass
Кто-нибудь может предложить хороший фрагмент кода? Может кто-нибудь предложить здесь более чистый и оптимизированный код?
1 ответ
Я настоятельно рекомендую использовать существующую библиотеку, а не пытаться написать свои регулярные выражения для этого. Другие люди вложили значительную работу в Beautiful Soup, например, и вы могли бы также извлечь из этого пользу.
Для этого конкретного случая Beautiful Soup предлагает метод get_text:
text = BeautifulSoup(f).get_text()