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 相关文章推荐
PHPStorm 2020.1 调试 Nodejs的多种方法详解
Sep 17 NodeJs
利用NodeJS和PhantomJS抓取网站页面信息以及网站截图
Nov 18 NodeJs
使用upstart把nodejs应用封装为系统服务实例
Jun 01 NodeJs
提高NodeJS中SSL服务的性能
Jul 15 NodeJs
详谈nodejs异步编程
Dec 04 NodeJs
Windows系统下使用Sublime搭建nodejs环境
Apr 13 NodeJs
使用DNode实现php和nodejs之间通信的简单实例
Jul 06 NodeJs
nodejs入门教程三:调用内部和外部方法示例
Apr 24 NodeJs
nodejs中解决异步嵌套循环和循环嵌套异步的问题
Jul 12 NodeJs
nodejs express配置自签名https服务器的方法
May 22 NodeJs
NodeJS多种创建WebSocket监听的方式(三种)
Jun 04 NodeJs
详解nodejs内置模块
May 06 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中利用post传递字符串重定向的实现代码
2011/04/21 PHP
Smarty中常用变量操作符汇总
2014/10/27 PHP
通过PHP简单实例介绍文件上传
2015/12/16 PHP
php中访问修饰符的知识点总结
2019/01/27 PHP
文本框获得焦点和失去焦点的判断代码
2012/03/18 Javascript
JS中不为人知的五种声明Number的方式简要概述
2013/02/22 Javascript
JS中表单的使用小结
2014/01/11 Javascript
AMD异步模块定义介绍和Require.js中使用jQuery及jQuery插件的方法
2014/06/06 Javascript
鼠标事件的screenY,pageY,clientY,layerY,offsetY属性详解
2015/03/12 Javascript
bootstrapfileinput实现文件自动上传
2016/11/08 Javascript
jquery实现左右轮播图效果
2017/09/28 jQuery
详解使用React进行组件库开发
2018/02/06 Javascript
微信小程序实现时间戳格式转换
2020/07/20 Javascript
JS代码简洁方式之函数方法详解
2020/07/28 Javascript
[47:55]Ti4第二日主赛事败者组 NaVi vs EG 1
2014/07/20 DOTA
使用wxpython实现的一个简单图片浏览器实例
2014/07/10 Python
python编程羊车门问题代码示例
2017/10/25 Python
使用pygame模块编写贪吃蛇的实例讲解
2018/02/05 Python
python调用系统ffmpeg实现视频截图、http发送
2018/03/06 Python
pandas or sql计算前后两行数据间的增值方法
2018/04/20 Python
python numpy数组的索引和切片的操作方法
2018/10/20 Python
python之拟合的实现
2019/07/19 Python
python并发爬虫实用工具tomorrow实用解析
2019/09/25 Python
python实现超市管理系统(后台管理)
2019/10/25 Python
解决pyshp UnicodeDecodeError的问题
2019/12/06 Python
锐步美国官方网站:Reebok美国
2018/01/10 全球购物
雅高酒店中国:Accorhotels.com China
2018/03/26 全球购物
lookfantastic荷兰:在线购买奢华护肤、护发和化妆品
2018/11/27 全球购物
Columbia Sportswear法国官网:全球户外品牌
2020/09/25 全球购物
法学院方阵解说词
2014/01/29 职场文书
知识竞赛拉拉队口号
2014/06/16 职场文书
z-index不起作用
2021/03/31 HTML / CSS
如何利用map实现Nginx允许多个域名跨域
2021/03/31 Servers
Jupyter notebook 更改文件打开的默认路径操作
2021/05/21 Python
Python利用folium实现地图可视化
2021/05/23 Python
解决vue-router的beforeRouteUpdate不能触发
2022/04/14 Vue.js