【问题标题】:How to remove all html tags from downloaded page如何从下载的页面中删除所有html标签
【发布时间】:2010-07-28 09:22:05
【问题描述】:

我已经使用 urlopen 下载了一个页面。如何从中删除所有 html 标签?是否有任何正则表达式来替换所有 标签?

【问题讨论】:

标签: python


【解决方案1】:

我还可以推荐BeautifulSoup,这是一个易于使用的 html 解析器。在那里你会做类似的事情:

from BeautifulSoup import BeautifulSoup

soup = BeautifulSoup(html)
all_text = ''.join(soup.findAll(text=True))

这样您就可以从 html 文档中获取所有文本。

【讨论】:

  • 这需要一个外部库,但这并不总是满足某些人希望分发脚本的需求的解决方案。
  • 我也会添加 utf-8 编码:all_text = ''.join(soup.findAll(text=True)).encode('utf-8')
【解决方案2】:

有一个很棒的 Python 库,名为 bleach。下面的这个调用将删除所有 html 标签,保留其他所有内容(但不会删除不可见的标签内的内容)。

bleach.clean(thestring, tags=[], attributes={}, styles=[], strip=True)

【讨论】:

  • 如果有单个>,它将被转义到>。不理想。
【解决方案3】:

您可以使用html2text,它应该从 HTML 源(以编程方式使用 Python 或作为命令行工具)生成等效的可读文本。 因此,我可以从您的问题中推断出您的需求......

【讨论】:

    【解决方案4】:

    有多种选项可以从数据中过滤掉 Html 标签。您可以使用 Python 内置的 w3lib 中的 Regex 或 remove_tags。

    from w3lib.html import remove_tags
    data_to_remove = '<p>hello\t\t, \tworld\n</p>'
    print remove_tags(data_to_remove)`
    

    输出:你好世界

    注意:remove_tags 接受字符串对象。你可以通过 remove_tags(str(data_to_remove))

    【讨论】:

      【解决方案5】:

      试试这个:

      import re
      
      def remove_html_tags(data):
        p = re.compile(r'<.*?>')
        return p.sub('', data)
      

      【讨论】:

      • 我同意。这段代码完全符合我的要求。
      【解决方案6】:

      一个非常简单的正则表达式是:

      import re
      notag = re.sub("<.*?>", " ", html)
      

      这个解决方案的缺点是它不会删除 javascript 或 css,而只会删除标签。

      【讨论】:

      • 如果您在实际标签的外部或内部有非转义的“”字符,那将会失败。如果这不是问题,您可以使用正则表达式。如果没有,您将需要使用实际的 html/xml 解析器。
      • -1:不明智、脆弱的解决方案。用一个额外的“”来调试页面会很困难。
      • 简单高效,非常棒的清理数据,我个人日常使用。当遇到更复杂的问题时,我会使用 BeautifulSoup,但请:让我们保持简单的问题simples。你在这里提到的案例将是罕见的,如果不是不存在的话。仅当您需要所有潜在数据并且绝对干净时才需要考虑它。
      • 只有大约一千种方法会失败,对于真正的网页来说绝对会失败。
      【解决方案7】:

      如果你需要 HTML 解析,Python 有a module 为你准备!

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-10-11
        • 2015-12-13
        • 1970-01-01
        • 1970-01-01
        • 2012-01-07
        • 1970-01-01
        • 1970-01-01
        • 2012-10-11
        相关资源
        最近更新 更多