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()
Другие вопросы по тегам