node.js爬虫框架node-crawler初体验


Posted in Javascript onOctober 29, 2020

百度爬虫这个词语,一般出现的都是python相关的资料。

py也有很多爬虫框架,比如scrapy,Portia,Crawley等。

之前我个人更喜欢用C#做爬虫。

随着对nodejs的熟悉。发现做这种事情还是用脚本语言适合多了,至少不用写那么多的实体类。而且脚本一般使用比较简单。

在github上搜索node+spider,排名第一的就是node-crawler 

github:https://github.com/bda-research/node-crawler

简单使用

npm 安装:

npm install crawler

new一个crawler对象

var c = new Crawler({
 // 在每个请求处理完毕后将调用此回调函数
 callback : function (error, res, done) {
  if(error){
   console.log(error);
  }else{
   var $ = res.$;
   // $ 默认为 Cheerio 解析器
   // 它是核心jQuery的精简实现,可以按照jQuery选择器语法快速提取DOM元素
   console.log($("title").text());
  }
  done();
 }
});

然后往crawler队列里面不停的加url就行了,

// 将一个URL加入请求队列,并使用默认回调函数
c.queue('http://www.amazon.com');

// 将多个URL加入请求队列
c.queue(['http://www.google.com/','http://www.yahoo.com']);

控制并发速度

爬虫框架一般都是同时去爬多个页面,但是速度过快会触发目标网站的反爬虫机制,也同时影响别人网站的性能。

控制最大的并发数量

var c = new Crawler({
 // 最大并发数默认为10
 maxConnections : 1,

 callback : function (error, res, done) {
  if(error){
   console.log(error);
  }else{
   var $ = res.$;
   console.log($("title").text());
  }
  done();
 }
});

使用慢速模式

使用参数 rateLimit 启用慢速模式,两次请求之间会闲置 rateLimit 毫秒,而 maxConnections 将被强行修改为 1 。

var c = new Crawler({
 // `maxConnections` 将被强制修改为 1
 maxConnections : 10,

 // 两次请求之间将闲置1000ms
 rateLimit: 1000,

 callback : function (error, res, done) {
  if(error){
   console.log(error);
  }else{
   var $ = res.$;
   console.log($("title").text());
  }
  done();
 }
});

下载图片等静态文件

var c = new Crawler({
 encoding:null,
 jQuery:false,// set false to suppress warning message.
 callback:function(err, res, done){
  if(err){
   console.error(err.stack);
  }else{
   fs.createWriteStream(res.options.filename).write(res.body);
  }
  
  done();
 }
});

c.queue({
 uri:"https://nodejs.org/static/images/logos/nodejs-1920x1200.png",
 filename:"nodejs-1920x1200.png"
});

以上就是node.js爬虫框架node-crawler初体验的详细内容,更多关于爬虫框架node-crawler的资料请关注三水点靠木其它相关文章!

Javascript 相关文章推荐
jQuery(1.3.2) 7行代码搞定跟随屏幕滚动的层
May 21 Javascript
JQuery 表单中textarea字数限制实现代码
Dec 07 Javascript
火狐4、谷歌12不支持Jquery Validator的解决方法分享
Jun 20 Javascript
js防止表单重复提交实现代码
Sep 05 Javascript
asm.js使用示例代码
Nov 28 Javascript
js将控件隐藏及display属性的使用介绍
Dec 30 Javascript
原生javascript获取元素样式
Dec 31 Javascript
JavaScript中文件上传API详解
Apr 01 Javascript
ionic中的$ionicPlatform.ready事件中的通用设置
Jun 11 Javascript
angularJs-$http实现百度搜索时的动态下拉框示例
Feb 27 Javascript
mpvue微信小程序开发之实现一个弹幕评论
Nov 24 Javascript
原生JavaScript实现弹幕组件的示例代码
Oct 12 Javascript
JavaScript实现网页计算器功能
Oct 29 #Javascript
Javascript数组及类数组相关原理详解
Oct 29 #Javascript
antd Form组件方法getFieldsValue获取自定义组件的值操作
Oct 29 #Javascript
node.js如何操作MySQL数据库
Oct 29 #Javascript
TypeScript魔法堂之枚举的超实用手册
Oct 29 #Javascript
解决antd的Form组件setFieldsValue的警告问题
Oct 29 #Javascript
vue 函数调用加括号与不加括号的区别
Oct 29 #Javascript
You might like
dedecms系统常用术语汇总
2007/04/03 PHP
PHP中类与对象功能、用法实例解读
2020/03/27 PHP
javascript globalStorage类代码
2009/06/04 Javascript
jquery tools 系列 scrollable学习
2009/09/06 Javascript
javascript获取select的当前值示例代码(兼容IE/Firefox/Opera/Chrome)
2013/12/17 Javascript
Js表格万条数据瞬间加载实现代码
2014/02/20 Javascript
Jquery自定义button按钮的几种方法
2014/06/11 Javascript
13 款最热门的 jQuery 图像 360 度旋转插件推荐
2014/12/09 Javascript
JavaScript 数组some()和filter()的用法及区别
2016/05/20 Javascript
Bootstrap Validator 表单验证
2016/07/25 Javascript
node.js中fs.stat与fs.fstat的区别详解
2017/06/01 Javascript
js实现京东轮播图效果
2017/06/30 Javascript
详解react-router 4.0 下服务器如何配合BrowserRouter
2017/12/29 Javascript
Angular2.0实现modal对话框的方法示例
2018/02/18 Javascript
详解jQuery中的easyui
2018/09/02 jQuery
解决微信小程序调用moveToLocation失效问题【超简单】
2019/04/12 Javascript
Vue动态面包屑功能的实现方法
2019/07/01 Javascript
JS正则表达式验证密码强度
2020/03/18 Javascript
Vue router安装及使用方法解析
2020/12/02 Vue.js
vue 数据操作相关总结
2020/12/17 Vue.js
Python并发编程协程(Coroutine)之Gevent详解
2017/12/27 Python
python画微信表情符的实例代码
2019/10/09 Python
使用Tkinter制作信息提示框
2020/02/18 Python
Python3 selenium 实现QQ群接龙自动化功能
2020/04/17 Python
如何在python中判断变量的类型
2020/07/29 Python
通过实例简单了解python yield使用方法
2020/08/06 Python
python 下载文件的几种方法汇总
2021/01/06 Python
微软中国官方商城:Microsoft Store中国
2018/10/12 全球购物
法国高保真音响和家庭影院商店:Son Video
2019/04/26 全球购物
竞选卫生委员演讲稿
2014/04/28 职场文书
小学教师师德师风演讲稿
2014/08/22 职场文书
2014年车间主任工作总结
2014/12/10 职场文书
工作时间证明
2015/06/15 职场文书
2015秋季运动会通讯稿
2015/07/18 职场文书
六五普法先进个人主要事迹材料
2015/11/03 职场文书
2016年国庆节宣传标语
2015/11/25 职场文书