美文网首页我的专题
基于简单脚本的下一代开源爬虫框架 - Creeper

基于简单脚本的下一代开源爬虫框架 - Creeper

作者: Plutonist | 来源:发表于2017-02-17 15:49 被阅读34次

    Creeper 是一个基于简单脚本( Creeper Script ,扩展名 .crs )的下一代开源爬虫框架。

    使用方法比较独特,可能需要捉摸一会儿才会理解。

    需要配合一门正经的编程语言(只开发了 Go 版本)来使用,先在 Creeper Script 内定义爬取规则,然后用 Go 代码来读取规则,再爬取资源。

    使用场景一般会用在需要同时采集大量不同网站,或者开发聚合阅读器时。(以后可能会增加 cli 和数据库访问支持)

    简单的用例:

    假如我想要爬取 HackerNews ,需要写出这样子的脚本,其实看起来有些类似 yaml 配合 jquery 的样子,但是其实差别挺大的。

    page(@page=1) = "https://news.ycombinator.com/news?p={@page}"
    
    news[]: page -> $("tr.athing")
        title: $(".title a.storylink").text
        site: $(".title span.sitestr").text
        link: $(".title a.storylink").href
    

    之后在 Go 文件中来读取并使用这个脚本;

    package main
    
    import "github.com/wspl/creeper"
    
    func main() {
        c := creeper.Open("./hacker_news.crs")
        c.Array("news").Each(func(c *creeper.Creeper) {
            println("title: ", c.String("title"))
            println("site: ", c.String("site"))
            println("link: ", c.String("link"))
            println("===")
        })
    }
    

    执行后,将会如期地输出类似下面的内容:

    title:  Samsung chief Lee arrested as S.Korean corruption probe deepens
    site:  reuters.com
    link:  http://www.reuters.com/article/us-southkorea-politics-samsung-group-idUSKBN15V2RD
    ===
    title:  ReactOS 0.4.4 Released
    site:  reactos.org
    link:  https://reactos.org/project-news/reactos-044-released
    ===
    title:  FeFETs: How this new memory stacks up against existing non-volatile memory
    site:  semiengineering.com
    link:  http://semiengineering.com/what-are-fefets/
    

    目前这个项目嘛,还处于刚刚把基本功能开发完毕的状态,也就是只是个玩具的状态,但是我也会慢慢地完善,并且补充容错机制还有加上测试代码。

    Github 地址: https://github.com/wspl/creeper

    项目根目录有个测试用的 eh 的爬取规则(逃

    项目基于 Apache 2.0

    相关文章

      网友评论

        本文标题:基于简单脚本的下一代开源爬虫框架 - Creeper

        本文链接:https://www.haomeiwen.com/subject/osklwttx.html