如何使用robobrowser从html中剥离标签

时间:2014-05-01 19:43:15

标签: python django beautifulsoup robobrowser

我正在试验http://robobrowser.readthedocs.org/en/latest/readme.html,这是一个基于美丽汤库的新python库。在一些帮助下,我在django应用程序中返回了一个html页面,但我无法弄清楚剥离标签只给我文本。 我的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 code to remove HTML tags from a string):

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 个答案:

答案 0 :(得分:2)

BeautifulSoup提供了soup::get_text()方法,用于从解析的HTML文档中提取文本(有点令人困惑,这相当于getText方法和text属性)。您可以使用browser.parsed访问当前页面的已解析HTML。因此,要获取当前页面的纯文本,请尝试

text = browser.parsed.get_text()

答案 1 :(得分:1)

我更喜欢使用bleach

以下是一些示例代码:

import Bleach
varName = ( bleach.clean( result.find_all( class_ = 'className' ),
                          strip  = True
                          )
            ).strip( '[])' )