NodeJS+服务器端jQuery的Web爬网程序/Spider;-)
Posted
tags:
中文标题:NodeJS+服务器端jQuery的Web爬网程序/Spider;-) 原文标题:Web Crawler/Spider for NodeJS + server-side jQuery ;-) 项目评级:Star:6400 Fork:891 下载地址:https://github.com/bda-research/node-crawler 详情介绍Node最强大、最流行、最生产的爬行/抓取包,快乐黑客:)
特征:
这是CHANGELOG
多亏了Authuir,我们有了一份中文文档。欢迎使用其他语言!
目录
开始
安装
基本用途
慢点
当您访问网站时,使用rateLimit
来减慢速度。
自定义参数
有时您必须访问上一个请求/响应会话中的变量,您应该做的是传递与选项相同的参数:
然后通过res.options
在回调中访问它们
爬网程序只根据请求选择需要的选项,所以不用担心冗余。
生坯
如果你正在下载图像、pdf、word等文件,你必须保存原始响应体,这意味着Crawler不应该将其转换为字符串。要实现这一点,您需要将编码设置为null
预请求
如果您想在每次请求之前同步或异步地执行某些操作,可以尝试下面的代码。请注意,直接请求不会触发preRequest。
先进的
直接发送请求
如果您想直接发送请求,而不需要通过Crawler中的调度程序,请尝试下面的代码。direct
采用与queue
相同的选项,请参阅选项了解详细信息。不同的是,当调用direct
时,callback
必须明确定义,有两个参数error
和response
,这与方法queue
的callback
相同。
使用Http2
节点爬虫现在支持http请求。http2请求的代理功能现在不包括在内。它将在未来添加。
处理瓶颈
使用限制器控制的速率限制。提交给限制器的所有任务都将遵守限制器的rateLimit
和maxConnections
限制。rateLimit
是两项任务之间的最小时间间隔。maxConnections
是可以同时运行的最大任务数。限制器是相互独立的。一个常见的用例是为不同的代理设置不同的限制器。有一点值得注意,当rateLimit
设置为非零值时,maxConnections
将强制为1。
通常,爬网程序中限制器集群中的所有限制器实例都是使用爬网程序构造函数中指定的选项实例化的。您可以通过调用下面的代码来更改任何限制器的属性。目前,我们只支持更改限制器的属性“rateLimit”。请注意,默认限制器可通过c.setLimiterProperty('default', 'rateLimit', 3000)
访问。我们强烈建议您在实例化后保持限制器不变,除非您清楚地知道自己在做什么。
类别:履带式
事件:“schedule”
在将任务添加到计划程序时发出。
事件:“limiterChange”
当限制器发生变化时发出。
事件:“请求”
爬网程序准备发送请求时发出。
若您要在请求之前的最后阶段修改选项,只需听一下即可。
事件:“排水”
队列为空时发出。
crawler.queue(uri |选项)
排队等待任务的执行。
爬网程序队列大小
队列大小,只读
选项参考
如果您希望这些选项是全局的或作为
如果希望queue()中的项特定于该项,则调用(覆盖全局选项)
此选项列表是mikeal请求选项的严格超集,将直接传递给
request()方法。
基本请求选项
回调
时间表选项
重试选项
服务器端DOM选项
字符集编码
隐藏物
Http标头
HTTP 2
Https套接字5
使用Cheerio或JSDOM
默认情况下,爬网程序使用Cheerio而不是JSDOM。JSDOM更健壮,如果您想使用JSDOM,在将其传递给爬网程序之前,您必须在自己的脚本中要求它require('jsdom')
。
与Cheerio合作
这些解析选项直接取自htmlparser2,因此可以在htmlparser2
中使用的任何选项在cheerio中也是有效的。默认选项为:
有关选项及其效果的完整列表,请参阅
htmlparser2的选项。
来源
使用JSDOM
为了使用JSDOM,您必须将其安装在npm install jsdom
的项目文件夹中,并将其传递给爬网程序。
如何测试
Crawler使用nock
来模拟http请求,因此测试不再依赖http服务器。
备选方案:Docker
安装Docker后,您可以运行:
粗暴的蹒跚学步者
python MongoDB支持的宽度优先的Web爬网程序框架。
使用 Javascript 或 Web 表单的 Web 爬网站点