0.3.28 • Published 3 months ago
espider v0.3.28
ESpider 爬虫框架
支持中间件, 布隆过滤重复请求, 断点续爬, 数据库队列, session状态保持
Feature
redis 分布式
安装
pnpm i espider
pnpm i tslib
前提条件
// tsconfig.json
{
"compilerOptions": {
"experimentalDecorators": true, // 启用装饰器
"emitDecoratorMetadata": true // 支持装饰器元数据
}
}
使用例子
使用 装饰器
进行事件绑定
export class TestSpider extends SessionESpider {
public name = 'test'
@SpiderReady()
onReady() {
console.log('onReady执行')
this.addRequestTask({
url: 'https://www.baidu.com?' + Date.now(),
}, {
skipCheck: true
})
// for (let i = 0; i < 30; i++) {
// this.addRequestTask({
// url: 'https://www.baidu.com?' + Date.now(),
// })
// }
}
@SpiderRequestBefore()
onTask(req: AddRequestTaskOptions){
}
@SpiderRequest() // 不传入 scope 则表示匹配所有请求
request(request: AxiosSessionRequestConfig) {
console.log('request', request.url)
// console.log('request', request)
}
@SpiderResponse('www.baidu.com')
responseFunc(
res: AxiosSessionResponse,
req: AddRequestTaskOptions
) {
console.log('response', req.url)
// console.log('response', res.data)
}
@SpiderError(/baidu.com/) // 支持正则
onError(
err: AxiosSessionError,
req: AddRequestTaskOptions
) {
console.log(err.message)
this.addRequestTask(req) // 请求重试
}
}
const spider = new TestSpider()
spider.setOptions({
requestConcurrency: 1,
dupeFilterOptions: {
alwaysResetCache: true,
},
requestInterval: 5000,
taskOptions: {
alwaysResetQueue: true,
}
})
.start()
.then(() => console.log('启动成功'))
事件
查看 装饰器事件定义
0.3.28
3 months ago
0.3.26
3 months ago
0.3.9
10 months ago
0.3.16
10 months ago
0.3.15
10 months ago
0.3.13
10 months ago
0.3.12
10 months ago
0.3.11
10 months ago
0.3.10
10 months ago
0.3.20
10 months ago
0.3.25
10 months ago
0.3.23
10 months ago
0.3.22
10 months ago
0.3.21
10 months ago
0.3.0
10 months ago
0.3.19
10 months ago
0.3.18
10 months ago
0.3.6
10 months ago
0.3.5
10 months ago
0.3.8
10 months ago
0.3.2
10 months ago
0.3.1
10 months ago
0.3.3
10 months ago
0.2.0-beta
12 months ago
0.2.1-beta
12 months ago
0.2.13
12 months ago
0.2.12
12 months ago
0.2.11
12 months ago
0.2.10
12 months ago
0.2.6
12 months ago
0.2.9
12 months ago
0.2.8
12 months ago
0.2.3
12 months ago
0.2.2
12 months ago
0.2.5
12 months ago
0.0.3
3 years ago
0.0.2
3 years ago
0.0.1
3 years ago