有什么轻量的Python库可以去除HTML标签?(仅保留文本)
我知道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 文件,特别适合快速开发一些项目,比如抓取网页内容。它有三个强大的特点:
- 如果你给它一些格式不太好的文档,Beautiful Soup 也不会崩溃。它会生成一个解析树,这个树大致能反映你原始文档的结构。通常,这样就足够让你提取到需要的数据了。
- Beautiful Soup 提供了一些简单的方法和 Python 的写法,方便你浏览、搜索和修改解析树。就像一个工具箱,可以帮你拆解文档,提取你需要的信息。你不需要为每个应用程序都写一个专门的解析器。
- Beautiful Soup 会自动把输入的文档转换成 Unicode 格式,把输出的文档转换成 UTF-8 格式。你不需要担心编码的问题,除非文档没有指定编码,而 Beautiful Soup 也无法自动识别。这种情况下,你只需要告诉它原来的编码是什么就可以了。
4
Python的标准模块html.parser可以帮助你解析简单的HTML内容,并去掉标签。你只需要创建一个HTMLParser的子类,然后重写所有的handle_*()方法,这样它们就可以根据周围的元素标签来输出内容或者丢弃内容。