#html-parser #html #parser #class-name #no-std

no-std loa

使用纯 Rust 编写的 HTML 解析器,无 std

9 个版本

0.1.8 2022 年 11 月 20 日
0.1.7 2022 年 11 月 20 日

#2353解析器实现


npms 中使用

MIT 许可证

18KB
298

使用纯 Rust 编写的 HTML 解析器,无 std

Crates.io Rust license

[dependencies]
loa = "0.1.8"

从节点元素获取内部文本

fn main(){
   use loa::Getattribute;
   let html = include_str!("../index.html");
   let body = get_first_element_by_tag_name(html, "head").unwrap();
   let text = body.inner_text().unwrap();
   println!("{}",text);
}

获取节点属性

fn main() {
    use loa::{get_elements_by_tag_name, get_first_element_by_tag_name, Getattribute};
    let html = include_str!("../index.html");
    let p_list: Vec<String> = loa::get_elements_by_tag_name(html, "p");
    let a_first: String = loa::get_first_element_by_tag_name(html, "a").unwrap();
    let href = a_first.get_attribute("href");
    println!("{:?}", p_list);
    println!("{:?}", a_first);
    println!("{:?}", href);
    let buttons = get_elements_by_tag_name(html, "button");
    for bu in &buttons{
        if bu.contains("Cargo.toml"){
            println!("{:?}",bu.get_attribute("title"));
        }
    }
}    

解析 HTML 获取节点 Vec


fn main() {
    use loa::{get_elements_by_tag_name, get_first_element_by_tag_name, Getattribute};
    let html = include_str!("../index.html");
    let p_list: Vec<String> = loa::get_elements_by_tag_name(html, "p");
    let a_first: String = loa::get_first_element_by_tag_name(html, "a").unwrap();
    let href = a_first.get_attribute("href");
    let class = a_first.get_attribute("class");
    println!("{:?}", p_list);
    println!("{:?}", a_first);
    println!("{:?}", href);
    println!("{:?}", class);
}    

通过标签名获取第一个元素


fn main() {
    use loa::{get_elements_by_tag_name, get_first_element_by_tag_name, Getattribute};
    let html = include_str!("../index.html");
    let p_list: Vec<String> = loa::get_elements_by_tag_name(html, "p");
    let a_first: String = loa::get_first_element_by_tag_name(html, "a").unwrap();
    let href = a_first.get_attribute("href");
    let class = a_first.get_attribute("class");
    println!("{:?}", p_list);
    println!("{:?}", a_first);
    println!("{:?}", href);
    println!("{:?}", class);
}    

通过类名获取所有节点


fn main() {
   use loa::{
       get_elements_by_class_name, get_elements_by_tag_name, get_first_element_by_tag_name,
       Getattribute,
   };
   let html = include_str!("../index.html");
   let all_class = get_elements_by_class_name(html, "cake");
   println!("{:#?}",all_class);
}

获取所有 a 标签的 href

fn main(){
   use loa::*;
   let html = include_str!("../index.html");
   let hrefs = get_all_a_hrefs(html);
   println!("{:#?}",hrefs.unwrap());
}

通过类名获取第一个元素

fn main() {
   use loa::{
       get_elements_by_class_name, get_elements_by_tag_name, 
       get_first_element_by_tag_name,
       get_first_element_by_class_name,
       Getattribute,
   };
   let html = include_str!("../index.html");
   let class =  get_first_element_by_class_name(html, "cake");
   println!("{:#?}",class);
}

依赖项

~3–4.5MB
~75K SLoC