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服务器(1):一个简单nodejs服务器例子
Dec 18 NodeJs
用nodejs的实现原理和搭建服务器(动态)
Aug 10 NodeJs
Nodejs 发送Post请求功能(发短信验证码例子)
Feb 09 NodeJs
详解nodejs微信公众号开发——2.自动回复
Apr 10 NodeJs
NodeJS、NPM安装配置步骤(windows版本) 以及环境变量详解
May 13 NodeJs
Nodejs中使用captchapng模块生成图片验证码
May 18 NodeJs
NodeJS使用七牛云存储上传文件的方法
Jul 24 NodeJs
Nodejs下使用gm圆形裁剪并合成图片的示例
Feb 22 NodeJs
基于nodejs的雪碧图制作工具的示例代码
Nov 05 NodeJs
NodeJs之word文件生成与解析的实现代码
Apr 01 NodeJs
在NodeJs中使用node-schedule增加定时器任务的方法
Jun 08 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
关于file_get_contents返回为空或函数不可用的解决方案
2013/06/24 PHP
PHP几个实用自定义函数小结
2016/01/25 PHP
PHP登录验证码的实现与使用方法
2016/07/07 PHP
cakephp2.X多表联合查询join及使用分页查询的方法
2017/02/23 PHP
extjs 学习笔记(三) 最基本的grid
2009/10/15 Javascript
解决Extjs上传图片无法预览的解决方法
2012/03/22 Javascript
js跨浏览器实现将字符串转化为xml对象的方法
2013/09/25 Javascript
Bootstrap组件(一)之菜单
2016/05/11 Javascript
JS上传图片预览插件制作(兼容到IE6)
2016/08/07 Javascript
AngularJs每天学习之总体介绍
2017/08/07 Javascript
详解node child_process模块学习笔记
2018/01/24 Javascript
基于webpack4+vue-cli3项目实现换肤功能
2019/07/17 Javascript
Layui 解决表格异步调用后台分页的问题
2019/10/26 Javascript
使用Vue.set()方法实现响应式修改数组数据步骤
2019/11/09 Javascript
vue3自定义dialog、modal组件的方法
2021/01/04 Vue.js
Python 调用DLL操作抄表机
2009/01/12 Python
Python2.7读取PDF文件的方法示例
2017/07/13 Python
Python3.6 Schedule模块定时任务(实例讲解)
2017/11/09 Python
Python实现PS图像调整之对比度调整功能示例
2018/01/26 Python
Python Xml文件添加字节属性的方法
2018/03/31 Python
python实现简易动态时钟
2018/11/19 Python
python实现维吉尼亚加密法
2019/03/20 Python
python机器学习库scikit-learn:SVR的基本应用
2019/06/26 Python
python禁用键鼠与提权代码实例
2019/08/16 Python
如何用Matlab和Python读取Netcdf文件
2021/02/19 Python
英国豪华家具和经典家居饰品购物网站:OKA
2020/06/05 全球购物
秋季运动会表扬稿
2014/01/16 职场文书
心理健康课教学反思
2014/02/13 职场文书
2014年大学生就业规划书
2014/04/04 职场文书
《秋游》教学反思
2014/04/24 职场文书
教师竞聘上岗演讲稿
2014/09/03 职场文书
共青团员自我评价范文
2014/09/14 职场文书
四风问题原因分析及整改措施
2014/10/24 职场文书
公司经营目标责任书
2015/01/29 职场文书
《圆的面积》教学反思
2016/02/19 职场文书
Django如何创作一个简单的最小程序
2021/05/12 Python