LOL HTML

具有基于 CSS 选择器 API 的低输出延迟流式 HTML 解析器/重写器。「Low output latency streaming HTML parser/rewriter with CSS selector-based API」

Github星跟蹤圖

LOL HTML

Low Output Latency streaming HTML rewriter/parser with CSS-selector based API.

It is designed to modify HTML on the fly with minimal buffering. It can quickly handle very large
documents, and operate in environments with limited memory resources. More details can be found in the blog post.

The crate serves as a back-end for the HTML rewriting functionality of
Cloudflare Workers, but can be used
as a standalone library with a convenient API for a wide variety of HTML rewriting/analysis tasks.

Documentation

https://docs.rs/lol_html/

Bindings for other programming languages

Example

Rewrite insecure hyperlinks:

use lol_html::{element, HtmlRewriter, Settings};

fn main() -> Result<(), Box<dyn std::error::Error>> {
    let mut output = vec![];

    let mut rewriter = HtmlRewriter::try_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(())
}

License

BSD licensed. See the LICENSE file for details.

主要指標

概覽
名稱與所有者cloudflare/lol-html
主編程語言Rust
編程語言Rust (語言數: 5)
平台
許可證BSD 3-Clause "New" or "Revised" License
所有者活动
創建於2019-09-09 02:20:32
推送於2025-04-22 17:42:39
最后一次提交2025-04-21 16:10:20
發布數13
最新版本名稱v2.3.0 (發布於 )
第一版名稱v0.2.0 (發布於 )
用户参与
星數1.7k
關注者數28
派生數86
提交數591
已啟用問題?
問題數96
打開的問題數35
拉請求數132
打開的拉請求數2
關閉的拉請求數33
项目设置
已啟用Wiki?
已存檔?
是復刻?
已鎖定?
是鏡像?
是私有?