有什么轻量的Python库可以去除HTML标签?(仅保留文本)

0 投票
4 回答
772 浏览
提问于 2025-04-15 15:21

我知道NLTK这个工具有这个功能。不过还有其他的工具吗?

4 个回答

1

你可以看看这个叫做 Strip-o-Gram 的 HTML 转换库:http://pypi.python.org/pypi/stripogram/1.5

下面是 readme.txt 中的一个使用示例:

  from stripogram import html2text, html2safehtml
  mylumpofdodgyhtml # a lump of dodgy html ;-)
  # Only allow <b>, <a>, <i>, <br>, and <p> tags
  mylumpofcoolcleancollectedhtml = html2safehtml(mylumpofdodgyhtml,valid_tags=("b", "a", "i", "br", "p"))
  # Don't process <img> tags, just strip them out. Use an indent of 4 spaces 
  # and a page that's 80 characters wide.
  mylumpoftext = html2text(mylumpofcoolcleancollectedhtml,ignore_tags=("img",),indent_width=4,page_width=80)
4

BeautifulSoup: http://www.crummy.com/software/BeautifulSoup/

来自主页的介绍:

Beautiful Soup 是一个用 Python 编写的工具,专门用来处理 HTML 和 XML 文件,特别适合快速开发一些项目,比如抓取网页内容。它有三个强大的特点:

  1. 如果你给它一些格式不太好的文档,Beautiful Soup 也不会崩溃。它会生成一个解析树,这个树大致能反映你原始文档的结构。通常,这样就足够让你提取到需要的数据了。
  2. Beautiful Soup 提供了一些简单的方法和 Python 的写法,方便你浏览、搜索和修改解析树。就像一个工具箱,可以帮你拆解文档,提取你需要的信息。你不需要为每个应用程序都写一个专门的解析器。
  3. Beautiful Soup 会自动把输入的文档转换成 Unicode 格式,把输出的文档转换成 UTF-8 格式。你不需要担心编码的问题,除非文档没有指定编码,而 Beautiful Soup 也无法自动识别。这种情况下,你只需要告诉它原来的编码是什么就可以了。
4

Python的标准模块html.parser可以帮助你解析简单的HTML内容,并去掉标签。你只需要创建一个HTMLParser的子类,然后重写所有的handle_*()方法,这样它们就可以根据周围的元素标签来输出内容或者丢弃内容。

撰写回答