Node.js实现简单的爬取的示例代码


Posted in Javascript onJune 25, 2019

学习【node.js】也有几天时间了,所以打算写着练练手;索然我作为一个后端的选手,写起来还有那么一丝熟悉的感觉。emmm~~ ‘货'不多讲 ,开搞........

首先是依赖选择:

Node.js实现简单的爬取的示例代码

代码块如下:

//引入依赖

//https请求

const https = require('https');

//简称node版的jquery

const cheerio = require('cheerio');

//解决防止出现乱码

const iconv = require('iconv-lite')

//http请求

const request = require("request");

//负责读写文件

const fs = require('fs');

//处理文件路径

const path = require('path');

爬取路径:

Node.js实现简单的爬取的示例代码

代码块:(PS:这里单独拿出来是因为这个站的素材比较推荐,可以上去瞅瞅~~)

const url = 'https://unsplash.com/';

初步实现:

网站的基本构成

Node.js实现简单的爬取的示例代码

这里主要是我们直接确认一下需要的【img】标签,以及外面的【figure】,然后直接就可以开工了....

核心代码:

//方法对象

const util = {

 

  getsrc: function (url) {

    https.get(url, res => {

      const chunks = [];

      res.on('data', chunk => {

        // chunks里面存储着网页的html内容

        chunks.push(chunk);

      });

      res.on('end', e => {

 

        let ALL = [];

        //编码格式

        let html = iconv.decode(Buffer.concat(chunks), 'utf8');

        let $ = cheerio.load(html, { decodeEntities: false });

 

        //标签遍历

        $("figure img").each(function (idex, elent) {

          let $elent = $(elent);

          let $srcset = $elent.attr("srcset");

          if ($srcset != undefined) {

            let src = ($srcset.split(',').pop()).split('?')[0];

            ALL.push({

              src: src

            })

          }

        });

        //遍历数组 每个后面加.jpg

        ALL.forEach(item => {

          util.downloadimg(item.src, path.basename(item.src) + ".jpg", function () {

            console.log(path.basename(item.src) + ".jpg");

          });

        })

      });

 

      res.on('error', e => {

        console.log('Error: ' + e.message);

      });

    });

  },

 

  //运行主函数

  main: function () {

    console.log("------start--------");

    util.getsrc(url);

  },

  //下载图片函数

  downloadimg: function (src, srcname, callback) {

 

    //http请求

    request.head(src, function (err, res, body) {

      if (err) {

        console.log('err:' + err);

        return false;

      }

      console.log('res: ' + res);

      //保存数据,这里是防止未来得及记录数据又开始读取数据而导致数据丢失

      request(src).pipe(fs.createWriteStream('./img/' + srcname)).on('close', callback);

    });

  }

}

 

//主函数

util.main();

然后就可以运行 node xxx.js 看运行结果。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
div当滚动到页面顶部的时候固定在顶部实例代码
May 27 Javascript
js格式化货币数据实现代码
Sep 04 Javascript
Javascript 学习笔记之 对象篇(二) : 原型对象
Jun 24 Javascript
javascript实现禁止复制网页内容
Dec 16 Javascript
jQuery中ajax的post()方法用法实例
Dec 26 Javascript
基于JS2Image实现圣诞树代码
Dec 24 Javascript
JS使用插件cryptojs进行加密解密数据实例
May 11 Javascript
Vue渲染函数详解
Sep 15 Javascript
thinkjs 文件上传功能实例代码
Nov 08 Javascript
Vue-cli3项目引入Typescript的实现方法
Oct 18 Javascript
vue简单封装axios插件和接口的统一管理操作示例
Feb 02 Javascript
基于angular实现树形二级表格
Oct 16 Javascript
浅谈目前可以使用ES10的5个新特性
Jun 25 #Javascript
vue 移动端注入骨架屏的配置方法
Jun 25 #Javascript
基于vue+axios+lrz.js微信端图片压缩上传方法
Jun 25 #Javascript
新手快速入门微信小程序组件库 iView Weapp
Jun 24 #Javascript
前端Vue项目详解--初始化及导航栏
Jun 24 #Javascript
微信小程序调用天气接口并且渲染在页面过程详解
Jun 24 #Javascript
微信小程序-可移动菜单的实现过程详解
Jun 24 #Javascript
You might like
星际争霸, 教主第一视角, ZvT经典龙蛇演义
2020/03/02 星际争霸
超外差式晶体管收音机的组装与统调
2021/03/01 无线电
php侧拉菜单 漂亮,可以向右或者向左展开,支持FF,IE
2009/10/15 PHP
php更改目录及子目录下所有的文件后缀扩展名的代码
2010/10/12 PHP
PHP IF ELSE简化/三元一次式的使用
2011/08/22 PHP
PHP Directory 函数的详解
2013/03/07 PHP
destoon二次开发模板及调用语法汇总
2014/06/21 PHP
php判断GIF图片是否为动画的方法
2020/09/04 PHP
PHP使用ob_start生成html页面的方法
2014/11/07 PHP
微信 开发生成带参数的二维码的实例
2016/11/23 PHP
PHP jQuery+Ajax结合写批量删除功能
2017/05/19 PHP
Yii框架参数化查询中IN查询只能查询一个的解决方法
2017/05/20 PHP
Yii 2.0自带的验证码使用经验分享
2017/06/19 PHP
Laravel ORM 数据model操作教程
2019/10/21 PHP
jQuery之Deferred对象详解
2014/09/04 Javascript
js实现window.open不被拦截的解决方法汇总
2014/10/30 Javascript
JS鼠标拖拽实例分析
2015/11/23 Javascript
javascript事件绑定学习要点
2016/03/09 Javascript
利用jQuery解析获取JSON数据
2017/04/08 jQuery
详解windows下vue-cli及webpack 构建网站(二)导入bootstrap样式
2017/06/17 Javascript
bootstrap时间插件daterangepicker使用详解
2017/10/19 Javascript
微信小程序倒计时功能实例代码
2018/07/17 Javascript
angular的输入和输出的使用方法
2018/09/22 Javascript
javascript的delete运算符知识点总结
2019/11/19 Javascript
JS实现图片幻灯片效果代码实例
2020/05/21 Javascript
Vue-resource安装过程及使用方法解析
2020/07/21 Javascript
Python自动扫雷实现方法
2015/07/25 Python
Python中time模块和datetime模块的用法示例
2016/02/28 Python
详解python 破解网站反爬虫的两种简单方法
2020/02/09 Python
澳大利亚小众服装品牌:Maurie & Eve
2018/03/27 全球购物
美国新娘礼品店:The Paisley Box
2020/09/08 全球购物
聘任书的写作格式及范文
2014/03/29 职场文书
说明书范文
2014/05/07 职场文书
记者节感言
2015/08/03 职场文书
超市员工管理制度
2015/08/06 职场文书
一文搞懂MySQL索引页结构
2022/02/28 MySQL