13 个版本 (6 个稳定版)
1.2.1 | 2024 年 3 月 11 日 |
---|---|
1.2.0 | 2023 年 9 月 13 日 |
1.1.1 | 2023 年 7 月 31 日 |
0.4.0 | 2023 年 4 月 25 日 |
0.1.0 | 2019 年 11 月 26 日 |
#2912 在 解析器实现
每月 17,791 次下载
在 51 个 包中使用(36 个直接使用)
545KB
11K SLoC
LOL HTML
Low Output Latency streaming HTML rewriter/parser with CSS-selector based API.
它旨在以最小缓冲区动态修改 HTML。它可以快速处理非常大的文档,并在内存资源有限的环境中运行。更多详细信息请参阅 博客文章。
该包作为 Cloudflare Workers HTML 重写功能的后端,但可以作为具有便捷 API 的独立库使用,适用于各种 HTML 重写/分析任务。
文档
其他编程语言的绑定
示例
重写不安全的超链接
use lol_html::{element, HtmlRewriter, Settings};
fn main() -> Result<(), Box<dyn std::error::Error>> {
let mut output = vec![];
let mut rewriter = HtmlRewriter::new(
Settings {
element_content_handlers: vec![
element!("a[href]", |el| {
let href = el
.get_attribute("href")
.expect("href was required")
.replace("http:", "https:");
el.set_attribute("href", &href)?;
Ok(())
})
],
..Settings::default()
},
|c: &[u8]| output.extend_from_slice(c)
);
rewriter.write(b"<div><a href=")?;
rewriter.write(b"http://example.com>")?;
rewriter.write(b"</a></div>")?;
rewriter.end()?;
assert_eq!(
String::from_utf8(output)?,
r#"<div><a href="https://example.com"></a></div>"#
);
Ok(())
}
许可证
BSD 许可。有关详细信息,请参阅 LICENSE 文件。
依赖关系
~7.5MB
~195K SLoC