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实用示例 缩址还原
Dec 28 NodeJs
Nodejs Express4.x开发框架随手笔记
Nov 23 NodeJs
NodeJS实现阿里大鱼短信通知发送
Jan 17 NodeJs
NodeJS创建基础应用并应用模板引擎
Apr 12 NodeJs
nodejs入门教程五:连接数据库的方法分析
Apr 24 NodeJs
nodejs multer实现文件上传与下载
May 10 NodeJs
nodeJs实现基于连接池连接mysql的方法示例
Feb 10 NodeJs
nodejs实现超简单生成二维码的方法
Mar 17 NodeJs
nodejs 简单实现动态html的方法
May 12 NodeJs
nodejs初始化init的示例代码
Oct 10 NodeJs
nodejs遍历文件夹下并操作HTML/CSS/JS/PNG/JPG的方法
Nov 01 NodeJs
Nodejs技巧之Exceljs表格操作用法示例
Nov 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
日本十大最佳动漫,全都是二次元的神级作品
2019/10/05 日漫
php获得当前的脚本网址
2007/12/10 PHP
PHP 数据结构 算法 三元组 Triplet
2011/07/02 PHP
Flash对联广告的关闭按钮讨论
2007/01/30 Javascript
基于Jquery实现的一个图片滚动切换
2012/06/21 Javascript
jQuery实现自定义事件的方法
2015/04/17 Javascript
js实现Select列表各项上移和下移的方法
2015/08/14 Javascript
js实现类似菜单风格的TAB选项卡效果代码
2015/08/28 Javascript
JavaScript禁止用户多次提交的两种方法
2016/07/24 Javascript
JS弹出窗口的运用与技巧大全
2016/11/01 Javascript
gulp加批处理(.bat)实现ng多应用一键自动化构建
2017/02/16 Javascript
js实现移动端微信页面禁止字体放大
2017/02/16 Javascript
详解React Native 采用Fetch方式发送跨域POST请求
2017/11/15 Javascript
vue.js实现只弹一次弹框
2018/01/29 Javascript
一个Java程序猿眼中的前后端分离以及Vue.js入门(推荐)
2019/04/19 Javascript
微信小程序 拍照或从相册选取图片上传代码实例
2019/08/28 Javascript
jQuery模仿ToDoList实现简单的待办事项列表
2019/12/30 jQuery
JS实现商品橱窗特效
2020/01/09 Javascript
JQuery复选框全选效果如何实现
2020/05/08 jQuery
[04:10]2016国际邀请赛中国区预选赛第二日TOP10精彩集锦
2016/06/28 DOTA
django admin添加数据自动记录user到表中的实现方法
2018/01/05 Python
Django ORM 自定义 char 类型字段解析
2019/08/09 Python
Pycharm2020最新激活码|永久激活(附最新激活码和插件的详细教程)
2020/09/29 Python
实习单位推荐信范文
2013/11/27 职场文书
毕业生个人的求职信范文
2013/12/03 职场文书
乐观大学生的自我评价
2014/01/10 职场文书
大学生创业感言
2014/01/25 职场文书
幼儿园教师节活动方案
2014/02/02 职场文书
2014年人力资源工作总结
2014/11/19 职场文书
运动会开幕词
2015/01/28 职场文书
七年级作文之雪景
2019/11/18 职场文书
经典人生语录分享:不畏将来,不念过去,笑对当下
2019/12/12 职场文书
SpringBoot 拦截器妙用你真的了解吗
2021/07/01 Java/Android
SQL实现LeetCode(196.删除重复邮箱)
2021/08/07 MySQL
浅谈Python中对象是如何被调用的
2022/04/06 Python
微信小程序调用python模型
2022/04/21 Python