0

我正在试验http://robobrowser.readthedocs.org/en/latest/readme.html,这是一个基于美丽汤库的新 python 库。在一些帮助下,我在 django 应用程序中返回了一个 html 页面,但我不知道要剥离标签以只给我 text 。我的 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 标签并返回文本?

4

2 回答 2

2

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

text = browser.parsed.get_text()

于 2014-07-27T23:05:45.050 回答
1

我更喜欢使用bleach.

这是一些示例代码:

import Bleach
varName = ( bleach.clean( result.find_all( class_ = 'className' ),
                          strip  = True
                          )
            ).strip( '[])' )
于 2014-11-10T18:30:34.883 回答