写了一个轮子nipper,顾名思义就是用来像镊子一样操作HTML的。
可以使用css选择器的语法在给定的html里查询需要的元素,甚至是修改这些元素。
use nipper::Document;
let html = include_str!("../test-pages/hacker_news.html");
let document = Document::from(html);
document.select("tr.athing").iter().for_each(|athing| {
let title = athing.select(".title a");
let source = title.select(".sitestr");
// The next sibling.
let meta = athing.next();
let score = meta.select("span.score");
let hnuser = meta.select("a.hnuser");
let age = meta.select("span.age");
// The last matched element.
let comment = meta.select("a").last();
println!("Title: {}", title.text());
if source.exists() {
println!("> from: {}", source.text());
}
if score.exists() {
println!("> {}", score.text());
}
if hnuser.exists() {
println!("> by {}", hnuser.text());
}
println!("> {}", age.text());
println!("> {}", comment.text());
println!();
});
其实rust早就有了类似的crate,但是这些轮子语法都有点繁琐,而且基本都只能查询,不能修改元素, 所以就在清明搞了这么一个东西,借鉴了golang里的goquery,语法就是css 选择器的语法。
大家如果觉得不错的话,可以点赞支持一波,谢谢! https://github.com/importcjj/nipper
Ext Link: https://github.com/importcjj/nipper
1
共 1 条评论, 1 页
评论区
写评论修改的话 一刷新就没有了吧