神箭手爬虫

神箭手爬虫是什么

神箭手爬虫依托于神箭手平台,使用JavaScript语言进行开发,通过配置和回调函数,来构建一个可以在神箭手平台上运行、爬取指定数据的爬虫。
一个神箭手爬虫的骨架如下:

var configs = {};
var crawler = new Crawler(configs);
crawler.start();

爬虫的基本设置和回调函数都定义在对象configs中,通过new Crawler(configs)来构建爬虫,最后通过start函数来启动。
神箭手爬虫开发就是通过实现不同的configs对象,来构建不同爬取目标的爬虫。

爬虫平台实现了什么

一般来说,一个完整的爬虫包含五个模块:链接调度、网页下载、数据抽取、链接发现、数据存储。神箭手爬虫平台对这五个模块做了最大程度的支持,以方便开发者迅速开发出想要的爬虫。

链接调度

平台实现了一个完善的分布式链接调度,调度细节是对开发者是透明的,不过开发者可以通过平台设定好的一些规则,来从整体上控制链接调度的顺序。完善的分布式链接调度,使得开发者开发出来的爬虫,直接具有分布式爬虫的能力,可以通过简单的加减节点操作,达到加速或减速爬取速度的目的。

网页下载

平台实现了三种方式的网页下载,效率最高最常用的HTTP、有渲染功能的HtmlUnitPhantomJS
默认是HTTP的方式下载,可以配置使用其他另外两种。

数据抽取

平台支持三种数据抽取方式,适用于网页的XPath、适用于json数据的JsonPath和适用于所有文本的正则表达式
整个数据的抽取需要开发者在configs中配置,可以结合使用这三种方式进行网页抽取。

链接发现

平台实现了通用的自动链接发现,不过对于定向爬虫,一般自动链接发现的效率会很低,需要开发者配置一些链接规则来提高自动链接发现的效率。
也可以通过平台提供的回调函数,自己控制整个链接发现。

数据存储

数据直接存储在神箭手平台,对开发者是透明的。平台实现了较完善的数据版本控制机制,并提供了相应的规则,开发者可以通过规则来控制数据的版本。
点击这里查看详细的版本控制规则。