9 个版本
0.1.8 | 2022 年 11 月 20 日 |
---|---|
0.1.7 | 2022 年 11 月 20 日 |
#2353 在 解析器实现
在 npms 中使用
18KB
298 行
使用纯 Rust 编写的 HTML 解析器,无 std
[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