1.0.0 • Published 7 years ago
node-sr-crawler v1.0.0
Spider.js
介绍
这里有两个概念需要你了解一下,1.请求实例 2.请求调度仓库
请求实例
生成一个请求实例
var req = new Request(config);
发送这个请求
var p = req.request(); //返回请求的Promise对象
配置对象(标准模式)
{
url: 'http://www.xxx.com/',
retry: 0, //默认0,重试次数(次)
retryTimeout: 0, //默认0,判定请求超时的依据(ms)
pageMode: false, //开启分页爬取模式,默认false
charSet: 'UTF-8', //请求压面的字符编码,默认utf-8
}
开启分页爬取模式后会忽略单独请求配置对象中的url字段,请求地址是结合调度仓库配置对象url字段和请求配置对象中pageIndex
请求调度仓库
生成一个仓库
var store = new Spider(config);
请求入库
var p = store.queue(req); //返回入库请求的Promise对象
配置对象(标准模式)
{
sendRate: 2000, //请求的发送间隔(ms),默认2000
retry: 0, //仓库中请求的重试次数,默认0
retryTimeout: 0, //仓库中请求的超时判定依据(ms),默认0
pageMode: false //是否开启分页模式,默认false
}
分页模式
一个分页模式的应用必须是双向的,也就是说,仓库和请求必须同时开启该请求才会开启分页模式,如想使用分页模式仓库必须开启pageMode,仓库中的请求可以选择性地开启
仓库 分页模式所需配置项
{
pageMode: true,
url: 'http://www.xxx.com/page=1', //分页爬取第1页的地址,地址中的页码必须是单数
pagePattern: /page=1/g, //能匹配上述(page=1)的正则表达式
}
请求 分页模式所需配置项
{
pageMode: true,
pageIndex: 1, //请求页码,会替换上面pagePattern中数字部分
}
基本使用
引入模块
var Spider = require('node-spider');
创建爬虫实例
配置对象写法详见config篇
var s1 = new Spider(config);
在请求队列队尾生成请求
var requset = new Request(requsetConfig);
var p = s1.queue(requset); //返回请求的promise实例
监听事件
请求事件
s1.on('request',function(request){
//request 实例
})
1.0.0
7 years ago