仅使用Python标准库进行html到文本的转换

时间:2012-03-19 15:27:59

标签: python html-parsing standard-library html-to-text

我正在寻找将HTML转换为文本的最佳方法,仅使用Python 2.7.x标准库中的模块。 (即,没有BeautifulSoup等)

通过HTML到文本转换,我的意思是道德等同于lynx -dump。事实上,只是智能地删除HTML标签,并将所有HTML实体转换为ASCII(或转换为UTF8编码的unicode)就足够了。

请不要使用基于正则表达式的答案。 (正则表达不能完成任务。)

谢谢!

3 个答案:

答案 0 :(得分:5)

Python 2.2以来有HTMLParser module。它不是最有效也不是最简单的用途,但它就在那里......

如果你正在处理正确的XHTML(或者你可以通过Tidy传递它),你可以使用得更好ElementTree

from xml.etree.ElementTree import ElementTree
tree = ElementTree()
tree.parse("your_document.xhtml")
your_string = tree.tostring(method="text", encoding="utf-8")

答案 1 :(得分:0)

我写了一个非常简单的python脚本,该脚本仅从HTML文件中提取标题和段落,而无需使用任何第三方 图书馆。 注意:此脚本非常简单,只能处理非常简单的HTML。 而且它是用python 3编写的

from unittest.mock import Mock, patch

@patch("requests.request")
def test_request(request_mock: Mock):
    response_mock = Mock(status_code=200)
    response_mock.json.return_value = {"foo": "bar"}
    request_mock.return_value = response_mock

您仍然可以扩展这个想法,并使其从HTML文件中提取更多内容。

答案 2 :(得分:-1)

我还建议你看一下html2text
另请查看另一个thread