node.js

关注公众号 jb51net

关闭
首页 > 网络编程 > JavaScript > node.js > node spider爬取图片数据

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

作者: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爬取图片+数据的资料请关注脚本之家其它相关文章!

您可能感兴趣的文章:
阅读全文