基于WHATWG HTML规范的HTML解析器
项目描述
html5lib
html5lib是一个纯Python库,用于解析HTML。它设计用于符合WHATWG HTML规范,这与所有主要网络浏览器的实现一致。
用法
简单用法遵循以下模式
import html5lib
with open("mydocument.html", "rb") as f:
document = html5lib.parse(f)
或者
import html5lib
document = html5lib.parse("<p>Hello World!")
默认情况下,document 将是一个 xml.etree 元素实例。在可能的情况下,html5lib会选择加速的 ElementTree 实现。
还支持两种其他树类型:xml.dom.minidom 和 lxml.etree。要使用替代格式,指定树构建器的名称
import html5lib
with open("mydocument.html", "rb") as f:
lxml_etree_document = html5lib.parse(f, treebuilder="lxml")
在使用 urllib.request (Python 3) 时,应将HTTP中的字符集传递给html5lib,如下所示
from urllib.request import urlopen
import html5lib
with urlopen("http://example.com/") as f:
document = html5lib.parse(f, transport_encoding=f.info().get_content_charset())
要更多地控制解析器,可以显式创建解析器对象。例如,要使解析器在解析错误时抛出异常,请使用
import html5lib
with open("mydocument.html", "rb") as f:
parser = html5lib.HTMLParser(strict=True)
document = parser.parse(f)
当您显式实例化解析器对象时,将树构建器类作为tree关键字参数传递,以使用替代文档格式
import html5lib
parser = html5lib.HTMLParser(tree=html5lib.getTreeBuilder("dom"))
minidom_document = parser.parse("<p>Hello World!")
更多文档可在https://html5lib.readthedocs.io/找到。
安装
html5lib支持CPython 3.8+和PyPy。要安装
$ pip install html5lib
目标是支持pip支持的版本的非严格超集。
可选依赖
以下第三方库可用于额外功能
lxml作为树格式(用于构建和遍历)在CPython中得到支持(但在PyPy中不支持,因为它已知会导致段错误);
genshi有一个树遍历器(但没有构建器);
chardet在无法确定字符编码时可以作为后备使用。
错误
请将任何错误报告在问题追踪器上。
测试
单元测试需要pytest和mock库,可以在根目录中使用pytest命令运行。
测试数据包含在单独的html5lib-tests仓库中,并作为子模块包含,因此对于git检查,必须初始化
$ git submodule init $ git submodule update
如果您在系统上提供了所有兼容的Python实现,您可以使用PyPI上可找到的tox实用工具在它们上面运行测试。
有问题?
您还可以浏览html5lib-discuss邮件列表的存档。
致谢
html5lib由以下人员编写和维护:
James Graham
Sam Sneddon
Łukasz Langa
Will Kahn-Greene
补丁和建议
(按时间顺序,按首次提交:)
Anne van Kesteren
Lachlan Hunt
lantis63
Sam Ruby
Thomas Broyer
Tim Fletcher
Mark Pilgrim
Ryan King
Philip Taylor
Edward Z. Yang
fantasai
Philip Jägenstedt
Ms2ger
Mohammad Taha Jahangir
Andy Wingo
Andreas Madsack
Karim Valiev
Juan Carlos Garcia Segovia
Mike West
Marc DM
Simon Sapin
Michael[tm] Smith
Ritwik Gupta
Marc Abramowitz
Tony Lopes
lilbludevil
Kevin
Drew Hubl
Austin Kumbera
Jim Baker
Jon Dufresne
Donald Stufft
Alex Gaynor
Nik Nyby
Jakub Wilk
Sigmund Cherem
Gabi Davar
Florian Mounier
neumond
Vitalik Verhovodov
Kovid Goyal
Adam Chainz
John Vandenberg
Eric Amorde
Benedikt Morbach
Jonathan Vanasco
Tom Most
Ville Skyttä
Hugo van Kemenade
Mark Vasilkov
HTML5Lib-modern
Ashley Sommer
项目详情
下载文件
下载适用于您平台的项目文件。如果您不确定选择哪个,请了解有关安装软件包的更多信息。
源码分发
构建分发
html5lib_modern-1.2.tar.gz的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 1fadbfc27ea955431270e4e79a4a4c290ba11c3a3098a95cc22dc73e312a1768 |
|
MD5 | 19c61ffaf0a57719d1c86f6550aff461 |
|
BLAKE2b-256 | af6da773b5338f4341cdeca17d17cf0e56016ed1f9e7ea8377456b275b63a7b0 |
html5lib_modern-1.2-py2.py3-none-any.whl的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 3458b6e31525ede4fcaac0ff42d9eeb5efaf755473768103cb56e0275caa8d99 |
|
MD5 | fc6fa9f8e8dbce1d904ea0b0af18aa9f |
|
BLAKE2b-256 | b1cdddf0baebab2dfac62a90af9d7a1c2504d697f1411f2529b928e02b4e9cd0 |