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

 更新时间:2020年10月29日 14:56:49   作者:青城同学  
这篇文章主要介绍了node.js爬虫框架node-crawler的相关资料,帮助大家利用node.js进行爬虫,感兴趣的朋友可以了解下

百度爬虫这个词语,一般出现的都是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的资料请关注脚本之家其它相关文章!

相关文章

  • nodejs中art-template模板语法的引入及冲突解决方案

    nodejs中art-template模板语法的引入及冲突解决方案

    本篇文章主要介绍了nodejs中art-template模板语法的引入及冲突解决方案,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-11-11
  • 分享五个Node.js开发的优秀实践 

    分享五个Node.js开发的优秀实践 

    这篇文章主要介绍了分享五个Node.js开发的优秀实践,文章围绕主题展开详细的分享内容,需要的小伙伴可以参考一下,希望对你的工作有所帮助
    2022-04-04
  • Node8中AsyncHooks异步生命周期

    Node8中AsyncHooks异步生命周期

    这篇文章主要介绍了Node8中AsyncHooks异步生命周期,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-04-04
  • Node.js+Express.js+TS实现简单图床脚本

    Node.js+Express.js+TS实现简单图床脚本

    在这篇博客文章中,我将介绍如何使用 TypeScript 和 Express 框架来编写一个简单的图床脚本,可以将本地图片上传到服务器,并返回图片的 URL,这样,你就可以在 Markdown 文档中方便地引用图片,而不用担心图片的存储和管理问题
    2023-10-10
  • Koa 使用小技巧(小结)

    Koa 使用小技巧(小结)

    这篇文章主要介绍了Koa 使用小技巧(小结),小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-10-10
  • Node.js 8 中的 util.promisify的详解

    Node.js 8 中的 util.promisify的详解

    本篇文章主要介绍了Node.js 8 中的 util.promisify的详解,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-06-06
  • nodejs如何获取时间戳与时间差

    nodejs如何获取时间戳与时间差

    本文详细介绍了nodejs获取时间戳与时间差的多种方法,对平时nodejs的使用很有帮助,下面一起来看看吧。
    2016-08-08
  • Node.js 缓冲区(Buffer)模块的方法及实例分析

    Node.js 缓冲区(Buffer)模块的方法及实例分析

    在本篇文章里小编给大家整理了一篇关于Node.js 缓冲区(Buffer)模块的方法及实例分析,对此有兴趣的朋友们可以跟着学习下。
    2022-01-01
  • [将免费进行到底]在Amazon的一年免费服务器上安装Node.JS, NPM和OurJS博客

    [将免费进行到底]在Amazon的一年免费服务器上安装Node.JS, NPM和OurJS博客

    此文是介绍如何在Amazon的一年免费计划上安装Node.JS, NPM还有搭建OurJS博客系统。,需要的朋友可以参考下
    2014-08-08
  • 阿里云OSS实践文件直传基于服务端

    阿里云OSS实践文件直传基于服务端

    这篇文章主要为大家介绍了阿里云OSS实践文件直传基于服务端实现示例,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-06-06

最新评论