13个不稳定版本
0.7.0 | 2023年5月11日 |
---|---|
0.6.3 | 2022年4月21日 |
0.6.2 | 2020年12月21日 |
0.5.0 | 2020年11月28日 |
0.1.0 | 2020年5月20日 |
#321 在 解析器实现 中排名
11,233 每月下载量
用于 57 个crate (23个直接使用)
55KB
591 行
Html解析器
一个简单且通用的html/xhtml解析器库/bin,使用Pest。
功能
- 解析html & xhtml(不处理xml处理指令)
- 解析html文档
- 解析html片段
- 解析空文档
- 使用相同的api解析文档和片段
- 解析自定义、非标准的元素;
<cat/>
,<Cat/>
和<C4-t/>
- 移除注释
- 移除悬空元素
- 遍历DOM中的所有节点三次
它不是什么
- 它不是一个高性能的浏览器级解析器
- 它不适用于html验证
- 它不是一个包含元素选择或DOM操作的解析器
如果你的需求符合上述任何一项,那么你可能需要查找以下crate之一
示例bin
解析html文件
html_parser index.html
解析stdin并输出格式化结果
curl <website> | html_parser -p
示例lib
解析html文档
use html_parser::Dom;
fn main() {
let html = r#"
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Html parser</title>
</head>
<body>
<h1 id="a" class="b c">Hello world</h1>
</h1> <!-- comments & dangling elements are ignored -->
</body>
</html>"#;
assert!(Dom::parse(html).is_ok());
}
解析html片段
use html_parser::Dom;
fn main() {
let html = "<div id=cat />";
assert!(Dom::parse(html).is_ok());
}
输出为json
use html_parser::{Dom, Result};
fn main() -> Result<()> {
let html = "<div id=cat />";
let json = Dom::parse(html)?.to_json_pretty()?;
println!("{}", json);
Ok(())
}
依赖
~2.5–3.5MB
~72K SLoC