Как убрать теги из HTML с помощью robobrowser

Я экспериментирую с http://robobrowser.readthedocs.org/en/latest/readme.html, новой библиотекой python, основанной на красивой библиотеке супов. с некоторой помощью я возвратил html-страницу в приложении django, но я не могу понять, чтобы убрать теги, чтобы дать мне только текст. Мое приложение Django содержит:

def index(request):    

    from django.utils.html import strip_tags
    p=str(request.POST.get('p', False)) # p='https://www.yahoo.com/'
    browser = RoboBrowser(history=True)
    browser.open(p)
    html = browser.response
    stripped = strip_tags(html)
    return HttpResponse(stripped )

когда я смотрю на выведенный html, я вижу, что он совпадает с оригинальным html. Также я не думаю, что у robobrowser есть метод text() для красивого супа.

Я также попытался (из кода Python удалить теги HTML из строки):

def remove_html_markup(s):
    tag = False
    quote = False
    out = ""    

    for c in s:
            if c == '<' and not quote:
                tag = True
            elif c == '>' and not quote:
                tag = False
            elif (c == '"' or c == "'") and tag:
                quote = not quote
            elif not tag:
                out = out + c    

    return out

Тот же результат! Как я могу удалить HTML-теги и вернуть текст?

2 ответа

Решение

BeautifulSoup обеспечивает soup::get_text() метод извлечения текста из разобранного HTML-документа (несколько запутанно, это эквивалентно getText метод и text имущество). Вы можете получить доступ к проанализированному HTML текущей страницы, используя browser.parsed, Итак, чтобы получить простой текст текущей страницы, попробуйте

text = browser.parsed.get_text()

Я предпочитаю использовать bleach,

Вот пример кода:

import Bleach
varName = ( bleach.clean( result.find_all( class_ = 'className' ),
                          strip  = True
                          )
            ).strip( '[])' )
Другие вопросы по тегам