1 个不稳定版本
0.7.1 | 2023年9月23日 |
---|
#2906 在 解析器实现
26 每月下载量
用于 rscx-mdx
56KB
591 行
HTML 解析器
一个简单且通用的 html/xhtml 解析器库/二进制文件,使用 Pest。
功能
- 解析 html & xhtml(不处理 xml 指令)
- 解析 html 文档
- 解析 html 片段
- 解析空文档
- 使用相同的 API 解析文档和片段
- 解析自定义、非标准的元素;
<cat/>,
<Cat/>
和<C4-t/>
- 移除注释
- 移除悬空元素
- 遍历 DOM 中的所有节点三次
它不是什么
- 它不是一个高性能的浏览器级解析器
- 它不适用于 HTML 验证
- 它不是一个包含元素选择或 DOM 操作的解析器
如果您的需求符合上述任何一项,那么您可能正在寻找以下软件包之一
示例 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.6–3.5MB
~73K SLoC