快速上手

安装

shell> npm install crawler

最简单的使用实例

var Crawler = require("crawler");

var c = new Crawler({
    // 在每个请求处理完毕后将调用此回调函数
    callback : function (error, res, done) {
        if(error){
            console.log(error);
        }else{
            var $ = res.$;
            // $ 默认为 Cheerio 解析器
            // 它是核心jQuery的精简实现,可以按照jQuery选择器语法快速提取DOM元素
            console.log($("title").text());
        }
        done();
    }
});

// 将一个URL加入请求队列,并使用默认回调函数
c.queue('http://www.amazon.com');

// 将多个URL加入请求队列
c.queue(['http://www.google.com/','http://www.yahoo.com']);

// 对单个URL使用特定的处理参数并指定单独的回调函数
c.queue([{
    uri: 'http://parishackers.org/',
    jQuery: false,

    // The global callback won't be called
    callback: function (error, res, done) {
        if(error){
            console.log(error);
        }else{
            console.log('Grabbed', res.body.length, 'bytes');
        }
        done();
    }
}]);

// 将一段HTML代码加入请求队列,即不通过抓取,直接交由回调函数处理(可用于单元测试)
c.queue([{
    html: '<p>This is a <strong>test</strong></p>'
}]);

并发控制及慢速模式

使用参数 maxConnections 可控制最大并发数。

var Crawler = require("crawler");

var c = new Crawler({
    // 最大并发数默认为10
    maxConnections : 1,

    callback : function (error, res, done) {
        if(error){
            console.log(error);
        }else{
            var $ = res.$;
            console.log($("title").text());
        }
        done();
    }
});

c.queue('http://www.amazon.com');

使用参数 rateLimit 启用慢速模式,两次请求之间会闲置 rateLimit 毫秒,而 maxConnections 将被强行修改为 1 。

var Crawler = require("crawler");

var c = new Crawler({
    // `maxConnections` 将被强制修改为 1
    maxConnections : 10,

    // 两次请求之间将闲置1000ms
    rateLimit: 1000,

    callback : function (error, res, done) {
        if(error){
            console.log(error);
        }else{
            var $ = res.$;
            console.log($("title").text());
        }
        done();
    }
});

c.queue(['http://www.google.com/','http://www.yahoo.com']);