如何使用 robobrowser 从 html 中去除标签

Posted

技术标签:

【中文标题】如何使用 robobrowser 从 html 中去除标签【英文标题】:How to strip tags from html with robobrowser 【发布时间】:2014-06-18 09:08:50 【问题描述】:

我正在尝试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 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标签并返回文本?

【问题讨论】:

【参考方案1】:

我更喜欢使用bleach

下面是一些示例代码:

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

【讨论】:

【参考方案2】:

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

text = browser.parsed.get_text()

【讨论】:

谢谢,很有帮助

以上是关于如何使用 robobrowser 从 html 中去除标签的主要内容,如果未能解决你的问题,请参考以下文章

Python - 请求/RoboBrowser - ASPX POST JavaScript

如何单击python中的按钮

Python 爬虫库

Python库大全

python 进阶(转自http://python.jobbole.com/82633/)

如何使用 php 从 HTML 表中提取数据