#html-parser #html #parser #html-content

parsex

简单、快速、高效地解析和修改HTML文档

2个版本

0.1.1 2024年6月27日
0.1.0 2024年2月9日

5#html-content

Download history 89/week @ 2024-06-21 41/week @ 2024-06-28 27/week @ 2024-07-05

每月 下载 70

MIT 协议

32KB
655

简单、高效HTML解析器和修改器

提供了一种简单、快速、高效的方法来解析HTML文档,并可选择性地修改并重建它们(如有需要)。

示例

    // Parse HTML code
    let html = "<h1>Testing parsex</h1><p class=\"headline\">Quick test of this Rust package</p><br /><br /><ul id=\"category-list\"><li>First Item</li><li>Second Item</li><li>Third Item</li></ul><br /><p>Feel free to <a href-\"/contact\" id=\"contact-link\">contact us</a>.</p>";
    let mut stack = parsex::parse_html(html);

    // Go through all tags in hierarchial order, top to bottom, left to right
    for tag in stack.iter() {
        println!("Tag: {}, Contents: {}", tag.tag(), tag.contents());

        // Update, if title
        if tag.tag() == "h1" {
            tag.as_mut(&mut stack).set_contents("Updated Title Here");
        }
    }

    // Get updated title contents
    let title = stack.query().tag("h1").to_vec();
    println!("New Title: {}", title[0].contents());

    // Go through all lists, update 'class' attribute on items to 'new-item'
    for ul in stack.query().tag("ul").iter() {
        println!("List ID: {}", ul.attr("id").unwrap());
        for item in ul.children(&mut stack).iter() {
            println!("Item: {}", item.contents());
            //item.as_mut(&mut stack).set_attr("class", "new-item");
        }
    }

    // Get contact link, update href attribute
    if let Some(contact) = stack.query().tag("a").id("contact-link").iter().next() {
        let tag = stack.get_mut(&contact.id()).unwrap();
        tag.set_attr("href", "/new-contact");
    }

    // Render HTML document with modifications
    let updated_html = stack.render();
    println!("Updated HTML\n\n{}\n", updated_html);

联系

如果您需要任何帮助或软件开发,请通过电子邮件[email protected]联系我。

依赖项

~2–3MB
~53K SLoC