nodejs实现爬取网站图片功能


Posted in NodeJs onDecember 14, 2017

通过实例给大家讲解nodejs实现爬取网站图片功能,以下就是全部内容:

原理:

爬虫是最明显的IO密集型应用场景,显然用node,使得I/O等待开销小数据挖掘比较方便

借助express模块来搭建node服务

并使用request模块获取目标页面的html代码

下载cheerio模块对html代码做处理(cheerio类似jQuery的语法,所以好用又方便)

环境配置:

npm install express request cheerio --save

(1)引入各个模块

var http = require('http');
var request = require('request);
var cheerio = require('cheerio');
var fs = require('fs'); //用来操作文件
var url = 'https://movie.douban.com/cinema/nowplaying/beijing/' //定义要爬的页面

(2)发送请求

http.get(function(res){
  var html = '';
  var titles = [];
  res.setEncoding('utf-8') //防止中文乱码
  res.on('data',function(chunk){
    html += chrunk;    //监听data事件 每次取一块数据
  })
  res.on('end',function(){
    var $ = cheerio.load(html);  //获取数据完成后,解析html
    //将获取的图片存到images文件夹中
    $('.mod-bd img').each(function(index, item){
      //获取图片属性
      var imgName = $(this).parent().next().text().trimg()
      var imgfile = imgName + '.jpeg';
      var imgSrc = $(this).attr('src')
      //采用request模块,向服务器发起请求 获取图片资源
      request.head(imgSrc, function(error, res,body){
        if(error){
          console.log('失败了')
        }
      });
      //通过管道的方式用fs模块将图片写到本地的images文件下
      request(imgSrc).pipe.(fs.createWriteStream('./images/' + imgfile));
    })
    
  })
})
NodeJs 相关文章推荐
Google官方支持的NodeJS访问API,提供后台登录授权
Jul 29 NodeJs
Nodejs异步回调的优雅处理方法
Sep 25 NodeJs
使用DNode实现php和nodejs之间通信的简单实例
Jul 06 NodeJs
使用nodejs下载风景壁纸
Feb 05 NodeJs
nodejs获取微信小程序带参数二维码实现代码
Apr 12 NodeJs
Nodejs中crypto模块的安全知识讲解
Jan 03 NodeJs
nodejs中密码加密处理操作详解
Mar 20 NodeJs
手把手教你如何使用nodejs编写cli命令行
Nov 05 NodeJs
nodejs 使用nodejs-websocket模块实现点对点实时通讯
Nov 28 NodeJs
详解Nodejs get获取远程服务器接口数据
Mar 26 NodeJs
nodejs一个简单的文件服务器的创建方法
Sep 13 NodeJs
nodejs中使用archive压缩文件的实现代码
Nov 26 NodeJs
NodeJs form-data格式传输文件的方法
Dec 13 #NodeJs
nodejs实现截取上传视频中一帧作为预览图片
Dec 10 #NodeJs
nodejs实现大文件(在线视频)的读取
Oct 16 #NodeJs
nodejs发送http请求时遇到404长时间未响应的解决方法
Dec 10 #NodeJs
NodeJs实现定时任务的示例代码
Dec 05 #NodeJs
windows系统下更新nodejs版本的方案
Nov 24 #NodeJs
nodejs项目windows下开机自启动的方法
Nov 22 #NodeJs
You might like
PHP pathinfo()获得文件的路径、名称等信息说明
2011/09/13 PHP
php实现rc4加密算法代码
2012/04/25 PHP
使用php统计字符串中中英文字符的个数
2013/06/23 PHP
PHP中绘制图像的一些函数总结
2014/11/19 PHP
php微信公众平台开发之获取用户基本信息
2015/08/17 PHP
php微信公众平台开发(三)订阅事件处理
2016/12/06 PHP
JS获取图片lowsrc属性的方法
2015/04/01 Javascript
JavaScript获取数组最小值和最大值的方法
2015/06/09 Javascript
jquery无法为动态生成的元素添加点击事件的解决方法(推荐)
2016/12/26 Javascript
jQuery实现的简单排序功能示例【冒泡排序】
2017/01/13 Javascript
Jquery中attr与prop的区别详解
2017/05/27 jQuery
深入理解Node.js中通用基础设计模式
2017/09/19 Javascript
vue-cli2.9.3 详细教程
2018/04/23 Javascript
Vue.js图片预览插件使用详解
2018/08/27 Javascript
TypeScript类型声明书写详解
2019/08/28 Javascript
基于redis的小程序登录实现方法流程分析
2020/05/25 Javascript
Vue + Element-ui的下拉框el-select获取额外参数详解
2020/08/14 Javascript
Django中模版的子目录与include标签的使用方法
2015/07/16 Python
django从请求到响应的过程深入讲解
2018/08/01 Python
python 实现视频流下载保存MP4的方法
2019/01/09 Python
Python基于datetime或time模块分别获取当前时间戳的方法实例
2019/02/19 Python
python3.6使用tkinter实现弹跳小球游戏
2019/05/09 Python
Python内置函数property()如何使用
2020/09/01 Python
Python下使用Trackbar实现绘图板
2020/10/27 Python
python中子类与父类的关系基础知识点
2021/02/02 Python
iphoneX 适配客户端H5页面的方法教程
2017/12/08 HTML / CSS
基于canvas使用贝塞尔曲线平滑拟合折线段的方法
2018/01/10 HTML / CSS
HTML5中使用json对象的实例代码
2018/09/10 HTML / CSS
全球虚拟主机商:HostGator
2017/02/06 全球购物
“型”走纽约上东区:Sam Edelman
2017/04/02 全球购物
暑期实习鉴定
2013/12/16 职场文书
大学自我鉴定范文
2013/12/26 职场文书
护士辞职信范文
2014/01/19 职场文书
多媒体教室标语
2014/06/26 职场文书
初三毕业评语
2014/12/26 职场文书
2016年清明节期间群众祭祀活动工作总结
2016/04/01 职场文书