极简网络蜘蛛爬虫,适用任何网站,只需设置一条规则,就可以把你想要网站上的内容整理出来,非常方便,简单!
- 修复错误
- 优化程序
- 保证输出的数据不会影响到核心程序的处理
- 在 rules 中 cb 增加参数 hash,data
- 完善说明文档
- 修复程序无法识别多条规则,导致每次只显示最后一条的问题
- 修复因为无法解析网页内容导致程序终止
- 修复程序无法成功启动问题
- 弃用 crawler.js, 改用 superagent 模块
- 增加 debug 颜色分类
- 重构代码
- 新添加 rules.cb 函数,处理复杂的值,最后一定要用 return 返回
- 优化核心程序,能够访问更多的网页
- 增加完成操作'done'返回函数
- 添加线程处理
- 修改规则
- 添加一些规则示例(在 test 目录)使用时不设置 links 将自动运行示例
npm install spider.io --save
const Spider = require("spider.io");
new Spider({
callback: function(hash, data) {
console.log(hash, data);
},
run: true //立即运行
});
OR
const Spider = require("spider.io");
new Spider({
callback: function(hash, data) {
console.log(hash, data);
}
}).run();
const options = {
init: {
debug: false,
delay: 1000,
timeout: 5000,
retrys: 3,
threads: 1,
loop: false
},
links: {
title: "",
hash: "",
url: "",
rules: [
// 列表类型的数据,带下一级处理
{
list: "a",
rule: {
url: {
// 同级包含links的,必须有此参数
type: "href",
text: ""
},
title: {
type: "text",
text: ""
}
},
links: []
},
// 普通类型的数据
{
rule: {
url: {
// 同级包含links的,必须有此参数
type: "href",
text: ""
},
title: {
type: "text",
text: ""
}
}
},
// 数组形式的数据
{
key: "",
list: "",
rule: {
url: {
// 同级包含links的,必须有此参数
type: "href",
text: ""
},
title: {
type: "text",
text: ""
}
}
},
// 自定义处理返回数据,会合并上一级数据
{
cb: ($, init) => {
// $ -> 为格式化的dom对象,可以直接操作,语法规则请查看 jQuery
// init -> {hash, data}
// ...code
// 如果同级包含links,必须要有返回值,并且要包含url;可以返回 array 或 object
// return [{url: ''}] or {url: ''};
}
}
]
},
callback: (hash, data) => {
// 数据以单条记录返回,并不会一次返回所有值
},
done: () => {
// 全部处理完毕后回调该函数
}
};
参数名 | 使用说明 | 默认值 |
---|---|---|
debug | 输出调试信息,包括(网站访问时间,网站访问的内容) | false |
delay | 设置每个网站之间访问延迟 | 1000 |
timeout | 设置网站访问超时时间 | 5000 |
retrys | 设置网站访问重试次数 | 3 |
threads | 设置线程数 | 1 |
loop | 结束后是否自动重新开始 | false |
headers (主参数)(具体说明请查看 superagent)
参数名 | 使用说明 | 类型 | 必须 |
---|---|---|---|
title | 用于说明规则的作用 | text | × |
hash | 用作识别码,在 callback 中完全返回 | 不限制 | × |
url | 访问的网址 | text/array | √ |
rules | 应用于当前网址的规则 | array/object | √ |
max | 当 url 中包含{i}时,设置 i 的最大值 | number | × |
min | 当 url 中包含{i}时,设置 i 的最小值, 设置此值必须要设置 max,此默认值:1 | number | × |
参数名 | 使用说明 | 类型 | 必须 |
---|---|---|---|
list | 设置列表开始地址 | text | × |
rule | 设置获取的内容 | array/object | × |
links | 对于上一层的循环事件中连接另一规则 | array/object | × |
cb | 直接用函数操作,必须要返回值,$为格式化网站内容,必须要返回值 | function($) | × |
参数名 | 使用说明 | 类型 |
---|---|---|
key | 返回值为<key><text>位置的<type>属性值 | text |
使用方法:
{
<key>: {
type: 'text|val|html|href|src|....', //可以自己设置属性
text: '' //对于循环事件中,可以不设置值
}
}
在使用 links 时,此规则中必须包含 list,并且 rule 中必须包含<key>为 url
在连接的规则中会自动将列表中获取的 url,对 links 的 url 逐个替换,生成新的规则。
获取数据后的返回函数,返回值:
参数名 | 使用说明 | 类型 |
---|---|---|
hash | 返回该条规则中设置的 hash,不做处理,直接返回,用作规则识别 | 不限制 |
data | 逐个返回最后一层获取的数据 | json |