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学习笔记之(Url,QueryString,Path)模块
Jan 13 NodeJs
iPhone手机上搭建nodejs服务器步骤方法
Jul 06 NodeJs
nodejs中全局变量的实例解析
Mar 07 NodeJs
Nodejs实现多房间简易聊天室功能
Jun 20 NodeJs
nodejs微信扫码支付功能实现
Feb 17 NodeJs
nodejs中密码加密处理操作详解
Mar 20 NodeJs
详解Nodejs mongoose
Jun 10 NodeJs
NodeJS使用Range请求实现下载功能的方法示例
Oct 12 NodeJs
nodejs npm错误Error:UNKNOWN:unknown error,mkdir 'D:\Develop\nodejs\node_global'at Error
Mar 02 NodeJs
nodejs微信开发之授权登录+获取用户信息
Mar 17 NodeJs
nodejs微信开发之自动回复的实现
Mar 17 NodeJs
M2实现Nodejs项目自动部署的方法步骤
May 05 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
dedecms后台验证码总提示错误的解决方法
2007/03/21 PHP
基于PHP服务端图片生成缩略图的方法详解
2013/06/20 PHP
PHP把数字转成人民币大写的函数分享
2014/06/30 PHP
PHP 中 DOMDocument保存xml时中文出现乱码问题的解决方案
2016/09/19 PHP
JQuery入门——移除绑定事件unbind方法概述及应用
2013/02/05 Javascript
html文件中jquery与velocity变量中的$冲突的解决方法
2013/11/01 Javascript
简洁Ajax函数处理(示例代码)
2013/11/15 Javascript
JS使用ajax从xml文件动态获取数据显示的方法
2015/03/24 Javascript
JavaScript实现点击按钮复制指定区域文本(推荐)
2016/11/25 Javascript
Vue.2.0.5过渡效果使用技巧
2017/03/16 Javascript
Angular.JS中的指令引用template与指令当做属性详解
2017/03/30 Javascript
webpack项目调试以及独立打包配置文件的方法
2018/02/28 Javascript
浅谈高大上的微信小程序中渲染html内容—技术分享
2018/10/25 Javascript
Vuex持久化插件(vuex-persistedstate)解决刷新数据消失的问题
2019/04/16 Javascript
详解VUE前端按钮权限控制
2019/04/26 Javascript
jquery-ui 进度条功能示例【测试可用】
2019/07/25 jQuery
在Vue中使用Select选择器拼接label的操作
2020/10/22 Javascript
uniapp电商小程序实现订单30分钟倒计时
2020/11/01 Javascript
vue项目如何监听localStorage或sessionStorage的变化
2021/01/04 Vue.js
node中短信api实现验证码登录的示例代码
2021/01/20 Javascript
python开发利器之ulipad的使用实践
2017/03/16 Python
python多线程socket编程之多客户端接入
2017/09/12 Python
python交互式图形编程实例(三)
2017/11/17 Python
Flask模拟实现CSRF攻击的方法
2018/07/24 Python
python 剪切移动文件的实现代码
2018/08/02 Python
matplotlib实现区域颜色填充
2019/03/18 Python
Python日期时间Time模块实例详解
2019/04/15 Python
Python应用领域和就业形势分析总结
2019/05/14 Python
python正则表达式 匹配反斜杠的操作方法
2020/08/07 Python
Python xlrd/xlwt 创建excel文件及常用操作
2020/09/24 Python
床上用品全球在线购物:BeddingInn
2016/12/18 全球购物
Rosetta Stone官方网站:语言学习
2019/01/05 全球购物
syb养殖创业计划书
2014/01/09 职场文书
超市开业庆典活动策划方案
2014/09/15 职场文书
交通安全教育主题班会
2015/08/12 职场文书
文艺有韵味的诗句(生命类、亲情类...)
2019/07/11 职场文书