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 相关文章推荐
利用NodeJS的子进程(child_process)调用系统命令的方法分享
Jun 05 NodeJs
nodejs命令行参数处理模块commander使用实例
Sep 17 NodeJs
nodejs中实现sleep功能实例
Mar 24 NodeJs
nodejs实现邮件发送服务实例分享
Mar 29 NodeJs
Nodejs 和Session 原理及实战技巧小结
Aug 25 NodeJs
nodejs async异步常用函数总结(推荐)
Nov 17 NodeJs
详解nodeJs文件系统(fs)与流(stream)
Jan 24 NodeJs
nodejs多版本管理总结
Apr 03 NodeJs
nodejs提示:cross-device link not permitted, rename错误的解决方法
Jun 10 NodeJs
Sublime Text3 配置 NodeJs 环境的方法
May 20 NodeJs
nodejs使用Sequelize框架操作数据库的实现
Oct 21 NodeJs
Nodejs实现微信分账的示例代码
Jan 19 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使用数组实现队列
2012/02/05 PHP
PHP下获取上个月、下个月、本月的日期(strtotime,date)
2014/02/02 PHP
jquery复选框CHECKBOX全选、反选
2008/08/30 Javascript
JavaScript使用技巧精萃[代码非常实用]
2008/11/21 Javascript
artdialog的图片/标题以及关闭按钮不显示的解决方法
2013/06/27 Javascript
Extjs实现进度条的两种便捷方式
2013/09/26 Javascript
SeaJS入门教程系列之完整示例(三)
2014/03/03 Javascript
Javascript实现简单二级下拉菜单实例
2014/06/15 Javascript
javascript包装对象实例分析
2015/03/27 Javascript
JavaScript创建闭包的两种方式的优劣与区别分析
2015/06/22 Javascript
uploadify多文件上传参数设置技巧
2015/11/16 Javascript
每日十条JavaScript经验技巧(一)
2016/06/23 Javascript
JS动态给对象添加事件的简单方法
2016/07/19 Javascript
纯javaScript、jQuery实现个性化图片轮播【推荐】
2017/01/08 Javascript
一篇文章搞定JavaScript类型转换(面试常见)
2017/01/21 Javascript
yii form 表单提交之前JS在提交按钮的验证方法
2017/03/15 Javascript
很棒的vue弹窗组件
2017/05/24 Javascript
angularjs实现猜大小功能
2017/10/23 Javascript
详解HTML5 使用video标签实现选择摄像头功能
2017/10/25 Javascript
Vue.js用法详解
2017/11/13 Javascript
VUE实现Studio管理后台之鼠标拖放改变窗口大小
2020/03/04 Javascript
python Matplotlib画图之调整字体大小的示例
2017/11/20 Python
Python for循环生成列表的实例
2018/06/15 Python
pytorch torch.expand和torch.repeat的区别详解
2019/11/05 Python
中东地区最大的奢侈品市场:The Luxury Closet
2019/04/09 全球购物
初中生学习的自我评价
2013/11/14 职场文书
《圆明园的毁灭》教学反思
2014/02/28 职场文书
表决心的诗句大全
2014/03/11 职场文书
大一新生学期自我评价
2014/04/09 职场文书
党员检讨书
2014/10/13 职场文书
婚前协议书范本两则
2014/10/16 职场文书
幸福家庭事迹材料
2014/12/20 职场文书
投资意向协议书
2015/01/29 职场文书
法律意见书范文
2015/06/04 职场文书
MongoDB支持的索引类型
2022/04/11 MongoDB
Java 写一个简单的图书管理系统
2022/04/26 Java/Android