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实现黑名单中间件设计
Jun 17 NodeJs
轻松创建nodejs服务器(10):处理POST请求
Dec 18 NodeJs
Windows系统中安装nodejs图文教程
Feb 28 NodeJs
使用nodejs中httpProxy代理时候出现404异常的解决方法
Aug 15 NodeJs
nodejs利用http模块实现银行卡所属银行查询和骚扰电话验证示例
Dec 30 NodeJs
深入理解Nodejs Global 模块
Jun 03 NodeJs
ajax +NodeJS 实现图片上传实例
Jun 06 NodeJs
nodeJS(express4.x)+vue(vue-cli)构建前后端分离实例(带跨域)
Jul 05 NodeJs
nodejs对express中next函数的一些理解
Sep 08 NodeJs
详解nodejs中express搭建权限管理系统
Sep 15 NodeJs
NodeJS实现视频转码的示例代码
Nov 18 NodeJs
基于nodejs res.end和res.send的区别
May 14 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
openflashchart 2.0 简单案例php版
2012/05/21 PHP
php 参数过滤、数据过滤详解
2015/10/26 PHP
Laravel最佳分割路由文件(routes.php)的方式
2016/08/04 PHP
PHP实现广度优先搜索算法(BFS,Broad First Search)详解
2017/09/16 PHP
PHP将整数数字转换为罗马数字实例分享
2019/03/17 PHP
phpstorm 配置xdebug的示例代码
2019/03/31 PHP
php实现JWT(json web token)鉴权实例详解
2019/11/05 PHP
基于jquery的多彩百分比 动态进度条 投票效果显示效果实现代码
2011/08/28 Javascript
解析js中获得父窗口链接getParent方法以及各种打开窗口的方法
2013/06/19 Javascript
js+HTML5实现视频截图的方法
2015/06/16 Javascript
详解JavaScript中的Unescape()和String() 函数
2015/11/09 Javascript
require.js 加载 vue组件 r.js 合并压缩的实例
2016/10/14 Javascript
详解vue嵌套路由-query传递参数
2017/05/23 Javascript
javascript中的replace函数(带注释demo)
2018/01/07 Javascript
Vue中this.$router.push参数获取方法
2018/02/27 Javascript
微信小程序swiper使用网络图片不显示问题解决
2019/12/13 Javascript
JavaScript实现简单贪吃蛇效果
2020/03/09 Javascript
JS原型对象操作实例分析
2020/06/06 Javascript
Vue this.$router.push(参数)实现页面跳转操作
2020/09/09 Javascript
详解Python编程中time模块的使用
2015/11/20 Python
基于python的七种经典排序算法(推荐)
2016/12/08 Python
儿童学习python的一些小技巧
2018/05/27 Python
使用python实现快速搭建简易的FTP服务器
2018/09/12 Python
python 实现对文件夹中的图像连续重命名方法
2018/10/25 Python
Python设计模式之享元模式原理与用法实例分析
2019/01/11 Python
python实现加密的方式总结
2020/01/19 Python
pytorch中 gpu与gpu、gpu与cpu 在load时相互转化操作
2020/05/25 Python
Django如何使用asyncio协程和ThreadPoolExecutor多线程
2020/10/12 Python
html5 拖拽上传图片实例演示
2013/04/01 HTML / CSS
优秀中专生推荐信
2013/11/17 职场文书
教师见习期自我鉴定
2014/04/28 职场文书
2015年世界环境日活动方案
2015/05/05 职场文书
2015年宣传思想工作总结
2015/05/22 职场文书
家长会主持词开场白
2015/05/29 职场文书
酒店员工管理制度
2015/08/05 职场文书
mysql配置SSL证书登录的实现
2021/09/04 MySQL