ld-spider
v1.0.3
Published
`ld-spider`是一个基于http/https协议的接口访问包,依赖`axios`,主要功能包括: - 数据爬取队列控制 - 接口并发控制 - 接口爬取时间范围随机
Downloads
2
Readme
概述
ld-spider
是一个基于http/https协议的接口访问包,依赖axios
,主要功能包括:
- 数据爬取队列控制
- 接口并发控制
- 接口爬取时间范围随机
用法
// 主域名,爬取限制是按主域来做限制
const domain = 'www.baidu.com'
// 是否开启调试,开启后输出日志
const debug = true
// 爬取规则配置
const rule = {
// random=随机范围,单位ms; fixed=固定时间,单位ms
type: 'random',
// 当type=random时,该配置有效,表示随机的时间范围
range: {
min: 100,
max: 200
},
// 当type=fixed时,该配置有效,表示固定的时间间隔
fixedTime: 200,
// 并发数,表示每次爬取时的并发数据量
concurrent: 10,
}
// 初始化spider
const spider = Spider(domain, rule, debug);
// 设置持久化回调
spider.setPersist(async function(opt, res) {
// TODO 这里可以处理res结果
})
// 任务格式
const task = {
// 必填,请求方法
method: 'get|post|put|delete',
// 必填,请求路径,支持完整地址的写法,如果只写路径会自动跟domain拼接起来
url: '/api/***|http://***/api/***'
// 非必填,请求query
query: {},
// 非必填,请求data
data: {},
// 非必填,请求headers
headers: {}
}
// 添加爬取任务,有三种添加方法
const pre = false // 用来标识加入的任务是否提前,如果等于true,下一次任务为当前插入任务
// 方法一, 第一个参数为function
spider.addTask(function() {
// TODO 经过处理后返回任务或任务列表
return task || taskList
}, pre)
// 方法二,第一个参数为数组
const taskArr = [
task1,
task2,
...
]
spider.addTask(taskArr, pre)
// 方法三,第一个参数为对象
spider.addTask(task, pre)
// 开始爬取,该方法会一直爬取直到任务队列里面没有任务,期间可以通过addTask方法添加任务
spider.start()
api
setDebug(state = false)
设置是否开启调试模式
// 关闭调试模式
spider.setDebug(false)
// 开启调试模式
spider.setDebug(true)
setRule(rule = {})
设置爬取规则,设置完成后立即生效,作用到下个任务
const rule = {
// random=随机范围,单位ms; fixed=固定时间,单位ms
type: 'random',
// 当type=random时,该配置有效,表示随机的时间范围
range: {
min: 100,
max: 200
},
// 当type=fixed时,该配置有效,表示固定的时间间隔
fixedTime: 200,
// 并发数,表示每次爬取时的并发数据量
concurrent: 10,
}
spider.setRule(rule)
setPersist(fn)
设置持久化回调,如果没有配置,执行任务爬取后只会无脑爬取,没有实际作用,如果有配置回调方法,接口在爬取结束后会自动调用fn
方法,并传入[opts,res]作为fn
的入参
// opt参数为任务请求参数,res为请求结束返回内容
spider.setPersist(async function(opt) {
// TODO 这里可以做自己的数据持久化操作
})