1.0.0 • Published 7 years ago

spidermap v1.0.0

Weekly downloads
5
License
MIT
Repository
github
Last release
7 years ago

Spider.io

npm.io npm.io

极简网络蜘蛛爬虫,适用任何网站,只需设置一条规则,就可以把你想要网站上的内容整理出来,非常方便,简单!

最新更新

v5.0.9 2019/7/8

  1. 修复错误

v5.0.8 2019/7/8

  1. 优化程序
  2. 保证输出的数据不会影响到核心程序的处理
  3. 在 rules 中 cb 增加参数 hash,data
  4. 完善说明文档

v5.0.7 2019/7/7

  1. 修复程序无法识别多条规则,导致每次只显示最后一条的问题

v5.0.6 2018/11/21

  1. 修复因为无法解析网页内容导致程序终止

v5.0.3 2018/11/18

  1. 修复程序无法成功启动问题

v5.0.0 2018/4/14

  1. 弃用 crawler.js, 改用 superagent 模块
  2. 增加 debug 颜色分类
  3. 重构代码

v4.2.7

  1. 新添加 rules.cb 函数,处理复杂的值,最后一定要用 return 返回
  2. 优化核心程序,能够访问更多的网页
  3. 增加完成操作'done'返回函数
  4. 添加线程处理
  5. 修改规则
  6. 添加一些规则示例(在 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: () => {
    // 全部处理完毕后回调该函数
  }
};

init (主参数)

参数名使用说明默认值
debug输出调试信息,包括(网站访问时间,网站访问的内容)false
delay设置每个网站之间访问延迟1000
timeout设置网站访问超时时间5000
retrys设置网站访问重试次数3
threads设置线程数1
loop结束后是否自动重新开始false

headers (主参数)(具体说明请查看 superagent

links (主参数)

参数名使用说明类型必须
title用于说明规则的作用text×
hash用作识别码,在 callback 中完全返回不限制×
url访问的网址text/array
rules应用于当前网址的规则array/object
max当 url 中包含{i}时,设置 i 的最大值              number×
min当 url 中包含{i}时,设置 i 的最小值, 设置此值必须要设置 max,此默认值:1            number×  

rules

参数名使用说明类型必须
list设置列表开始地址text×
rule设置获取的内容array/object×
links对于上一层的循环事件中连接另一规则                          array/object×  
cb直接用函数操作,必须要返回值,\$为格式化网站内容,必须要返回值function(\$)×
rule (使用 jquery 选择器规则)
参数名使用说明类型
key返回值为\\位置的\属性值text

使用方法:

{
    <key>: {
        type: 'text|val|html|href|src|....', //可以自己设置属性
        text: ''                             //对于循环事件中,可以不设置值
    }
}
links

在使用 links 时,此规则中必须包含 list,并且 rule 中必须包含\为 url 在连接的规则中会自动将列表中获取的 url,对 links 的 url 逐个替换,生成新的规则。

callback (主参数)

获取数据后的返回函数,返回值:

参数名使用说明类型
hash返回该条规则中设置的 hash,不做处理,直接返回,用作规则识别不限制
data逐个返回最后一层获取的数据json
1.0.5

7 years ago

1.0.4

7 years ago

1.0.3

7 years ago

1.0.2

7 years ago

1.0.1

7 years ago

1.0.0

7 years ago