基于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 |