58个版本

0.28.0 2024年8月8日
0.27.0 2024年3月22日
0.26.0 2022年3月27日
0.25.1 2019年10月25日
0.2.1 2015年7月31日

23解析器实现 中排名

Download history 123405/week @ 2024-05-03 129779/week @ 2024-05-10 148847/week @ 2024-05-17 144912/week @ 2024-05-24 160251/week @ 2024-05-31 151818/week @ 2024-06-07 150476/week @ 2024-06-14 156441/week @ 2024-06-21 149327/week @ 2024-06-28 148566/week @ 2024-07-05 156717/week @ 2024-07-12 151883/week @ 2024-07-19 165781/week @ 2024-07-26 159538/week @ 2024-08-02 180616/week @ 2024-08-09 166255/week @ 2024-08-16

每月下载量702,816
用于 1,246 个crate(直接150个)

MIT/Apache

370KB
8K SLoC

html5ever

Build Status crates.io

API文档

html5ever是Servo项目的一部分开发的一个HTML解析器。

它可以按照WHATWG规范(即“HTML5”)解析和序列化HTML。然而,实际行为中存在一些差异,其中大多数已在错误跟踪器中记录。html5ever通过了html5lib-tests的所有标记符测试,除了未实现的功能之外的大多数树构建器测试。目标是通过所有html5lib测试,同时提供生产级Web浏览器所需的所有钩子,例如 document.write

注意,HTML语法与XML非常相似。为了正确解析XHTML,请使用XML解析器(尽管,野外的许多XHTML文档都是以与HTML兼容的形式序列化的)。

html5ever是用Rust编写的,因此它避免了使用C时出现的著名的安全问题。用Rust构建还使库具有与C编写的HTML解析器相当的高性能。html5ever基本上是一个C HTML解析器,但不需要垃圾回收器或其他重型运行时进程。

Rust入门

将html5ever添加到您的Cargo.toml文件中作为依赖项

[dependencies]
html5ever = "0.27"

您还应该查看 examples/html2html.rsexamples/print-rcdom.rsAPI 文档

在其他语言中开始使用

Python和其他语言的绑定非常受欢迎。

html5ever 开发

要获取测试套件,您需要运行

git submodule update --init

在仓库根目录下运行 cargo doc 以在 target/doc/ 下构建本地文档。

详细信息

html5ever 使用回调来操作 DOM,因此它不提供任何 DOM 树表示。

html5ever 专门使用 UTF-8 来表示字符串。未来它将通过转换输入来支持其他文档编码(以及 UCS-2 document.write)。

代码与 WHATWG 语法规范进行交叉引用,最终我们将有一种方法可以并排显示代码和规范。

html5ever 针对 Rust 的官方稳定版本进行构建,尽管一些优化仅在夜间版本上受支持。

依赖关系

~0.8–6MB
~23K SLoC