使用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中的async 和 await 关键字微任务和宏任务

    Node.js中的async 和 await 关键字微任务和宏任务

    这篇文章主要介绍了Node.js中的async和await关键字微任务和宏任务,文章围绕主题展开详细的内容介绍,具有一定的参考价值,需要的小伙伴可以参考一下
    2022-07-07
  • 详解PNPM Monorepo依赖项管理功能模拟实现

    详解PNPM Monorepo依赖项管理功能模拟实现

    这篇文章主要介绍了PNPM Monorepo依赖项管理功能模拟实现详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-03-03
  • 详解如何在NodeJS应用程序中处理多个API请求

    详解如何在NodeJS应用程序中处理多个API请求

    NodeJS默认是异步的,这意味着它已经能够同时处理多个请求,但它只适用于I/O操作,如HTTP请求、文件系统操作、数据库查询、实时聊天应用等,在处理CPU密集型任务时,可能需要很长时间,这就是为什么NodeJS提供了一些我们将在下面介绍的特定包
    2023-12-12
  • Node.js中DNS模块学习总结

    Node.js中DNS模块学习总结

    本篇文章给大家详细介绍了Node.js中DNS模块的相关知识点,以及相关的实例代码做了分享,有兴趣的朋友参考下。
    2018-02-02
  • 关于nodejs和npm版本不匹配的解决方法

    关于nodejs和npm版本不匹配的解决方法

    在运行npm命令时总会出现如下报错,npm dose not support Node.js v12.18.0,发现是node版本和npm版本不匹配造成的,所以本文给大家介绍了关于nodejs和npm版本不匹配的解决方法,需要的朋友可以参考下
    2023-11-11
  • 如何通过node.js来写接口详解

    如何通过node.js来写接口详解

    最近研究了一下nodejs写接口,发现接口并不难写,这篇文章主要给大家介绍了关于如何通过node.js来写接口的相关资料,文中通过实例代码和图文介绍的非常详细,需要的朋友可以参考下
    2022-09-09
  • 修改npm全局安装模式的路径方法

    修改npm全局安装模式的路径方法

    今天小编就为大家分享一篇修改npm全局安装模式的路径方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-05-05
  • 参考 EventEmitter实现一个简单的订阅发布功能函数

    参考 EventEmitter实现一个简单的订阅发布功能函数

    这篇文章主要为大家介绍了参考 EventEmitter实现一个简单的订阅发布功能函数示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-02-02
  • 一文教你如何使用Node进程管理工具-pm2

    一文教你如何使用Node进程管理工具-pm2

    这篇文章详细介绍了如何使用node进程管理工具pm2,文中代码示例讲解的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以借鉴一下
    2023-04-04
  • node.js突破nginx防盗链机制,下载图片案例分析

    node.js突破nginx防盗链机制,下载图片案例分析

    这篇文章主要介绍了node.js突破nginx防盗链机制,下载图片的方法,结合具体案例形式分析了防盗链的相关原理与node.js使用axios库下载防盗链图片的相关操作技巧,需要的朋友可以参考下
    2023-04-04

最新评论