使用nodejs spider爬取图片及数据实现

 更新时间:2023年07月24日 08:54:04   作者:Besmall  
这篇文章主要为大家介绍了使用nodejs spider爬取图片及数据实现详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

nodejs如何爬取数据+图片

nodejs爬取数据

当我们在做一些网站的时候,就需要用到一些数据,但是网上有,一点点的复制又比较麻烦,这是我们的nodejs就可以帮我们完成想要的数据

废话就不多说了,我直接上你们想要的

今天工作不是太忙就爬取了一个天气的网站

效果图

核心模块

首先我们需要引入一些需要的核心模块

//引入核心模块
var http = require("http");
var fs = require("fs");
var cheerio = require("cheerio");

接下来我们需要想要爬取的网站的网址

const news = "http://www.weather.com.cn/weather/101010100.shtml";

创建服务

下面我们创建服务,用来接收数据和数据本地存储

//创建服务
var strHtml = "";
var results = [];
http.get(news,(res)=>{
    //触发接收事件data
    res.on("data",(chunk)=>{
        //接收数据,将数据一点点的追加到没我们定义的空字符串中
        strHtml+=chunk;
    });
    //触发接收完成时间end
    res.on("end",()=>{
        //cheerio类似于jQuery我们在用他之前必须载入文档用(load方法)
        var $ = cheerio.load(strHtml);
        var menew = [];
        //遍历查出来的文本数据
        $("#7d li").each((index,item)=>{
            //定义一个空数组,将数据内容存在里面
            menew.push({id:index,text:$(item).text()});
        });
        //转换JSON字符串
      var res = JSON.stringify(menew);
      //储存到本地
        fs.writeFile("./data1.json",res,(err)=>{
            if(!err) console.log("成功写入");
        })
    });
});

nodejs爬取图片

这是前几天爬取的百度图片首页的几张图

效果图

核心模块

首先我们也需要引入一些需要的核心模块

//引入核心模块
var http = require("http");
var https = require("https");
var fs = require("fs");
var cheerio = require("cheerio");

接下来我们需要想要爬取的网站的网址

const news = "http://image.baidu.com/";

首先我们需要将图片的URL地址获取下来

//创建服务
http.get(imgurl,(res)=>{
    //触发接收事件data
    var imageData = "";
    res.on("data",(chunk)=>{
        //接收数据,将数据一点点的追加到没我们定义的空字符串中
        imageData+=chunk;
    });
    //触发接收完成时间end
    res.on("end",()=>{
        //cheerio类似于jQuery我们在用他之前必须载入文档用(load方法)
        var $ = cheerio.load(imageData);
        var ImgData = [];
        //遍历查出来的文本数据
        $(".img_pic_wrap_layer img").each((index,item)=>{ 
            //定义一个空数组,将数据内容存在里面 
            ImgData.push($(item).attr("src"));
        });
        //循环调用图片函数
        for(var i =0 ; i < ImgData.length ; i ++){
            saveImage(ImgData[i]);
        }
    });
});

封装函数

然后我们要根据图片URL地址保存成图片,我将它封装了一个函数

//封装图片函数
function saveImage(imageUrl){
    //创建服务
    https.get(imageUrl,(res)=>{
        //二进制
        res.setEncoding("binary");
        var imageData="";
        //将图片加载到内存中
        res.on("data",(shuju)=>{
            imageData+=shuju;
        });
        //加载完保存图片
        res.on("end",()=>{
            //创建文件夹,如果有择不创建
            if(!fs.existsSync("./img")){
                fs.mkdirSync("./img");
            };
            //保存图片
            fs.writeFile("img/"+Math.random()+'.png',imageData,"binary",(err)=>{
                if(err) throw err;
                console.log("保存成功!!!")
            })
        })
    })
}

不是太懂的可以去GitHub上面看源码

源码地址

以上就是nodejs_spider爬取图片+数据的详细内容,更多关于nodejs_spider爬取图片+数据的资料请关注脚本之家其它相关文章!

相关文章

  • Node.js中常用设计模式的使用方法总结

    Node.js中常用设计模式的使用方法总结

    设计模式是由经验丰富的程序员在日积月累中抽象出的用以解决通用问题的可复用解决方案,它提供了标准化的代码设计方案提升开发体验,本文主要来和大家讨论一下Node.js中设计模式的重要性并提供一些代码示例,感兴趣的可以了解下
    2023-10-10
  • Express 框架中使用 EJS 模板引擎并结合 silly-datetime 库进行日期格式化的实现方法

    Express 框架中使用 EJS 模板引擎并结合 silly-datetime

    这篇文章主要介绍了Express 框架中使用 EJS 模板引擎并结合 silly-datetime 库进行日期格式化的实现方法,结合具体实例形式分析了express框架引入EJS模版以及导入 silly-datetime 库的格式化方法传递给EJS模版使用的相关操作技巧,需要的朋友可以参考下
    2023-05-05
  • 详解nvm管理多版本node踩坑

    详解nvm管理多版本node踩坑

    这篇文章主要介绍了详解nvm管理多版本node踩坑,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-07-07
  • Express使用multer实现文件上传的示例代码

    Express使用multer实现文件上传的示例代码

    这篇文章主要介绍了Express 使用 multer 实现文件上传的操作步骤,文中通过代码示例和图文结合的方式讲解的非常详细,对大家的学习或工作有一定的帮助,需要的朋友可以参考下
    2024-03-03
  • nodejs中函数的调用实例详解

    nodejs中函数的调用实例详解

    本文通过实例代码给大家介绍了nodejs函数的调用,代码简单易懂,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下
    2018-10-10
  • Node.js利用Express实现用户注册登陆功能(推荐)

    Node.js利用Express实现用户注册登陆功能(推荐)

    这篇文章主要介绍了Node.js利用Express实现用户注册登陆功能,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-10-10
  • 手把手教你如何使用nodejs编写cli命令行

    手把手教你如何使用nodejs编写cli命令行

    这篇文章主要介绍了手把手教你如何使用nodejs编写cli命令行,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-11-11
  • Node.js 源码阅读深入理解cjs模块系统

    Node.js 源码阅读深入理解cjs模块系统

    这篇文章主要为大家介绍了Node.js 源码阅读深入理解cjs模块系统,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-09-09
  • Node.js 8 中的 util.promisify的详解

    Node.js 8 中的 util.promisify的详解

    本篇文章主要介绍了Node.js 8 中的 util.promisify的详解,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-06-06
  • 浅谈Nodejs中的作用域问题

    浅谈Nodejs中的作用域问题

    在JS中有全局作用域和函数作用域,而在Nodejs中也自己的作用域,分为全局作用域(global)和模块作用域。本文将对Nodejs中的作用域进行介绍,需要的朋友一起来看下吧
    2016-12-12

最新评论