前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【Rust项目推荐】造了一个可以用来写爬虫的轮子nipper

【Rust项目推荐】造了一个可以用来写爬虫的轮子nipper

作者头像
MikeLoveRust
发布2020-04-14 11:34:33
1.5K0
发布2020-04-14 11:34:33
举报

写了一个轮子nipper,顾名思义就是用来像镊子一样操作HTML的。

可以使用css选择器的语法在给定的html里查询需要的元素,甚至是修改这些元素。

代码语言:javascript
复制
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 选择器的语法。
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-04-07,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Rust语言学习交流 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档