Node.js爬虫

  • Node.js常用爬虫框架与无头浏览器

NodeCrawler
Simplecrawler

puppeteer

JavaScript编写的开源Web爬虫

  1. NodeCrawler
    实现语言: JavaScript
    GitHub星标数: 3999
    官方支持链接

简介:

NodeCrawler是一种广为使用的Web爬虫,它基于NodeJS实现,具有非常快的爬取速度。
Nodecrawler非常适用于偏爱使用JavaScript编程或者致力于JavaScript项目的开发人员。其安装也非常简单。
JSDOM和Cheerio(用于HTML解析)实现服务器端渲染。其中,JSDOM更为稳定。
特性:

使用 Cheerio(默认)或JSDOM实现服务端DOM和自动jQuery插入。
可配置池子规模和重试次数。
控制爬取率限制。
请求的优先队列。
支持forceUTF8模式,使得爬虫可以检测并转换字符集。
与4.x乃至更新版本兼容。
– 官方文档:https://github.com/bda-research/node-crawler

– 官方网站:http://nodecrawler.org/

  1. Simplecrawler
    实现语言: JavaScript
    GitHub星标数:1764
    官方支持链接
    简介:

Simplecrawler设计提供基本的、灵活且稳定的网站爬取API。
Simplecrawler在实现上考虑了针对特大型Web站点的归档、分析和搜索。它可爬取上百万页面,并毫无问题地向磁盘写入数十GB数据。
特性:

提供了用于自动检测链接资源的一些简单逻辑,用户可自行替换和添加。
自动请求任何robots.txt禁止规则。
具有灵活的队列系统,可在磁盘上冻结和解冻。
– 官方文档: https://github.com/simplecrawler/simplecrawler

– 官方网站: https://www.npmjs.com/package/simplecrawler

  1. Js-crawler :
    实现语言: JavaScript
    GitHub星标数: 167
    官方支持链接)
    简介:

使用NodeJS实现的Web爬虫,支持HTTP和HTTPS
– 官方文档: https://github.com/antivanov/js-crawler

– 官方网站: https://github.com/antivanov/js-crawler

  1. Webster
    实现语言: JavaScript
    GitHub星标数: 201
    官方支持链接
    简介:

Webster是一种使用NodeJS编写的可靠Web爬取和采集框架,用于爬取Web站点并从页面中抽取结构化数据。
与其他爬取框架的不同之处在于,Webster可以抓取浏览器客户端的JavaScript和Ajax请求呈现的内容。
– 官方文档: http://webster.zhuyingda.com/

– 官方网站: https://github.com/zhuyingda/webster

  1. Node-osmosis
    实现语言:JavaScript
    GitHub星标数: 3630
    **官方支持链接
    简介:
  • 一种使用NodeJS实现的HTML/XML解析器和Web爬虫。

特性:

使用原生libxml的C绑定。
干净的Promise类接口。
支持CSS 3.0和XPath 1.0选择器的混合。
Sizzle选择器、Slick选择器以及更多。
不具有像jQuery、cheerio或jsdom那样的大型依赖。
构成深度和复杂的数据结构。
HTML解析器特性:
快速解析;
高速搜索;
内存占用小。
HTML DOM特性:
加载和搜索ajax内容;
DOM交互和事件;
执行嵌入和远程脚本;
在DOM中执行代码。
HTTP请求特性:
日志记录URL,重定向和错误;
Cookie的jar包,以及自定义Cookie/头部/用户代理;
登录/表单提交、会话Cookie,基本的认证;
单代理、多代理,处理代理失败情况;
限制重试和重定向。
– 官方文档: https://rchipka.github.io/node-osmosis/global.html

– 官方网站: https://www.npmjs.com/package/osmosis

  1. Supercrawler
    实现语言:JavaScript
    GitHub星标数: 4341
    官方支持链接
    简介:

Supercrawler是一种使用NodeJS实现的Web爬虫,在设计上支持高度可配置和易用性。
一旦成功爬取一个网页(可以是图像、文本文档或其他任何文件),Supercrawler将会触发用户自定义的内容类型(content-type)处理器,处理页面解析、保存数据以及其它一些用户定义的功能。
特性:

链接检测:Supercrawler会解析所爬取的HTML文档,识别其中链接并添加到队列中。
机器人解析:在爬取前Supercrawler会请求robots.txt并检查其中的禁止规则。它也可识别站点地图。
站点地图解析:Supercrawler可以从XML站点地图文件中读取链接,并将链接添加到队列中。
并发限制:Supercrawler可限制在任一时间发出的请求数。
速率限制:Supercrawler可添加请求的时延,以免对服务器产生轰炸。
指数补偿(Exponential backoff)重试:Supercrawler将依此在一小时、两小时、四小时乃至更多时间后重试请求。要使用该特性,爬取队列必须使用数据库或Redis作为后端。
主机名均衡:Supercrawler可在不同主机名间平均分割请求量。要使用该特性,爬取队列必须以Redis为后端。
– 官方文档: https://github.com/brendonboshell/supercrawler

– 官方网站: https://github.com/brendonboshell/supercrawler

  1. Web scraper的Chrome扩展
    实现语言:JavaScript
    GitHub星标数: 775
    官方支持链接
    简介:

Web Scraper是一种Chrome浏览器扩展,构建用于从Web页面抽取数据。
用户可以使用该扩展创建计划(站点地图),定义如何遍历一个Web网站,以及如何从中抽取数据。
Web Scraper使用站点地图相应地遍历网站,并从中抽取数据。
支持以CSV格式导出所抽取的数据。
特性:

抽取多个页面。
站点地图和抽取的数据存储在浏览器的本地存储,也可存储在CouchDB中。
多种数据类型选取。
支持从动态网页(JavaScript+AJAX)抽取数据。
浏览抽取的数据。
以CSV格式导出抽取的数据。
导入、导出站点地图。
只依赖于Chrome浏览器。
– 官方文档: https://www.webscraper.io/documentation

– 官方网站: https://www.webscraper.io

  1. Headless Chrome爬虫
    实现语言:JavaScript
    GitHub星标数: 3256
    官方支持链接

简介:

使用基本HTML文件请求的爬虫,通常速度很快。但这样的爬虫往往会抽取到空白内容,尤其是在爬取使用AngularJS、React和Vue.js等现代前端框架构建的网站时。
特性:

分布式爬取。
可配置并发、延迟和重试。
支持深度优先搜索和广度优先搜索算法。
支持插拔缓存存储,例如Redis。
支持导出CSV和JSON。
在达到最大请求时暂停爬取,并可在任一时刻恢复。
自动插入用于抽取的jQuery。
保存屏幕截图,用于证实爬取过程。
模拟设备和用户代理。
具有优先队列,可提高爬取效率。
– 官方文档: https://github.com/yujiosaka/headless-chrome-crawler/blob/master/docs/API.md

– 官方网站: https://github.com/yujiosaka/headless-chrome-crawler

  1. X-ray
    实现语言:JavaScript
    GitHub星标数: 4464
    官方支持链接

特性:

模式灵活:支持字符串、数组、对象以及嵌套对象结构。模式并非绑定于所抽取的页面结构,支持用户获取选定结构中的数据。
可组合(Composable):API是完全可组合的,赋予用户抽取每个页面的极大灵活性。
分页支持:爬取页面在Web站点上的所有分页。X-ray还支持请求延迟和分页限制,并支持将爬取页面导入到单个文件中。这样一旦单个页面产生错误,用户不会失去所有已爬取的数据。
爬虫支持:从一个页面开始,轻易跳转另一个页面。页面跳转是可预测的,按深度优先爬取所有页面。
负责任的爬取:X-ray支持并发、限制、延迟、超时和限制,实现负责任地爬取任何页面。
可插拔驱动:可按用户需求置换不同的爬虫。
– 官方文档: https://github.com/matthewmueller/x-ray

– 官方网站: https://www.npmjs.com/package/x-ray-scraper