#html-parser #html #dom #parser #pest #json

html_parser_rscx

一个简单且通用的 html/xhtml 解析器

1 个不稳定版本

0.7.1 2023年9月23日

#2906解析器实现

26 每月下载量
用于 rscx-mdx

MIT 许可证

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