欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

使用nodejs?spider爬取圖片及數(shù)據(jù)實現(xiàn)

 更新時間:2023年07月24日 08:54:04   作者:Besmall  
這篇文章主要為大家介紹了使用nodejs?spider爬取圖片及數(shù)據(jù)實現(xiàn)詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪

nodejs如何爬取數(shù)據(jù)+圖片

nodejs爬取數(shù)據(jù)

當我們在做一些網(wǎng)站的時候,就需要用到一些數(shù)據(jù),但是網(wǎng)上有,一點點的復制又比較麻煩,這是我們的nodejs就可以幫我們完成想要的數(shù)據(jù)

廢話就不多說了,我直接上你們想要的

今天工作不是太忙就爬取了一個天氣的網(wǎng)站

效果圖

核心模塊

首先我們需要引入一些需要的核心模塊

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

接下來我們需要想要爬取的網(wǎng)站的網(wǎng)址

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

創(chuàng)建服務

下面我們創(chuàng)建服務,用來接收數(shù)據(jù)和數(shù)據(jù)本地存儲

//創(chuàng)建服務
var strHtml = "";
var results = [];
http.get(news,(res)=>{
    //觸發(fā)接收事件data
    res.on("data",(chunk)=>{
        //接收數(shù)據(jù),將數(shù)據(jù)一點點的追加到?jīng)]我們定義的空字符串中
        strHtml+=chunk;
    });
    //觸發(fā)接收完成時間end
    res.on("end",()=>{
        //cheerio類似于jQuery我們在用他之前必須載入文檔用(load方法)
        var $ = cheerio.load(strHtml);
        var menew = [];
        //遍歷查出來的文本數(shù)據(jù)
        $("#7d li").each((index,item)=>{
            //定義一個空數(shù)組,將數(shù)據(jù)內(nèi)容存在里面
            menew.push({id:index,text:$(item).text()});
        });
        //轉(zhuǎn)換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");

接下來我們需要想要爬取的網(wǎng)站的網(wǎng)址

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

首先我們需要將圖片的URL地址獲取下來

//創(chuàng)建服務
http.get(imgurl,(res)=>{
    //觸發(fā)接收事件data
    var imageData = "";
    res.on("data",(chunk)=>{
        //接收數(shù)據(jù),將數(shù)據(jù)一點點的追加到?jīng)]我們定義的空字符串中
        imageData+=chunk;
    });
    //觸發(fā)接收完成時間end
    res.on("end",()=>{
        //cheerio類似于jQuery我們在用他之前必須載入文檔用(load方法)
        var $ = cheerio.load(imageData);
        var ImgData = [];
        //遍歷查出來的文本數(shù)據(jù)
        $(".img_pic_wrap_layer img").each((index,item)=>{ 
            //定義一個空數(shù)組,將數(shù)據(jù)內(nèi)容存在里面 
            ImgData.push($(item).attr("src"));
        });
        //循環(huán)調(diào)用圖片函數(shù)
        for(var i =0 ; i < ImgData.length ; i ++){
            saveImage(ImgData[i]);
        }
    });
});

封裝函數(shù)

然后我們要根據(jù)圖片URL地址保存成圖片,我將它封裝了一個函數(shù)

//封裝圖片函數(shù)
function saveImage(imageUrl){
    //創(chuàng)建服務
    https.get(imageUrl,(res)=>{
        //二進制
        res.setEncoding("binary");
        var imageData="";
        //將圖片加載到內(nèi)存中
        res.on("data",(shuju)=>{
            imageData+=shuju;
        });
        //加載完保存圖片
        res.on("end",()=>{
            //創(chuàng)建文件夾,如果有擇不創(chuàng)建
            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爬取圖片+數(shù)據(jù)的詳細內(nèi)容,更多關(guān)于nodejs_spider爬取圖片+數(shù)據(jù)的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Node.js中的async?和?await?關(guān)鍵字微任務和宏任務

    Node.js中的async?和?await?關(guān)鍵字微任務和宏任務

    這篇文章主要介紹了Node.js中的async和await關(guān)鍵字微任務和宏任務,文章圍繞主題展開詳細的內(nèi)容介紹,具有一定的參考價值,需要的小伙伴可以參考一下
    2022-07-07
  • 詳解PNPM?Monorepo依賴項管理功能模擬實現(xiàn)

    詳解PNPM?Monorepo依賴項管理功能模擬實現(xiàn)

    這篇文章主要介紹了PNPM?Monorepo依賴項管理功能模擬實現(xiàn)詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-03-03
  • 詳解如何在NodeJS應用程序中處理多個API請求

    詳解如何在NodeJS應用程序中處理多個API請求

    NodeJS默認是異步的,這意味著它已經(jīng)能夠同時處理多個請求,但它只適用于I/O操作,如HTTP請求、文件系統(tǒng)操作、數(shù)據(jù)庫查詢、實時聊天應用等,在處理CPU密集型任務時,可能需要很長時間,這就是為什么NodeJS提供了一些我們將在下面介紹的特定包
    2023-12-12
  • Node.js中DNS模塊學習總結(jié)

    Node.js中DNS模塊學習總結(jié)

    本篇文章給大家詳細介紹了Node.js中DNS模塊的相關(guān)知識點,以及相關(guān)的實例代碼做了分享,有興趣的朋友參考下。
    2018-02-02
  • 關(guān)于nodejs和npm版本不匹配的解決方法

    關(guān)于nodejs和npm版本不匹配的解決方法

    在運行npm命令時總會出現(xiàn)如下報錯,npm?dose?not?support?Node.js v12.18.0,發(fā)現(xiàn)是node版本和npm版本不匹配造成的,所以本文給大家介紹了關(guān)于nodejs和npm版本不匹配的解決方法,需要的朋友可以參考下
    2023-11-11
  • 如何通過node.js來寫接口詳解

    如何通過node.js來寫接口詳解

    最近研究了一下nodejs寫接口,發(fā)現(xiàn)接口并不難寫,這篇文章主要給大家介紹了關(guān)于如何通過node.js來寫接口的相關(guān)資料,文中通過實例代碼和圖文介紹的非常詳細,需要的朋友可以參考下
    2022-09-09
  • 修改npm全局安裝模式的路徑方法

    修改npm全局安裝模式的路徑方法

    今天小編就為大家分享一篇修改npm全局安裝模式的路徑方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-05-05
  • 參考?EventEmitter實現(xiàn)一個簡單的訂閱發(fā)布功能函數(shù)

    參考?EventEmitter實現(xiàn)一個簡單的訂閱發(fā)布功能函數(shù)

    這篇文章主要為大家介紹了參考?EventEmitter實現(xiàn)一個簡單的訂閱發(fā)布功能函數(shù)示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-02-02
  • 一文教你如何使用Node進程管理工具-pm2

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

    這篇文章詳細介紹了如何使用node進程管理工具pm2,文中代碼示例講解的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以借鑒一下
    2023-04-04
  • node.js突破nginx防盜鏈機制,下載圖片案例分析

    node.js突破nginx防盜鏈機制,下載圖片案例分析

    這篇文章主要介紹了node.js突破nginx防盜鏈機制,下載圖片的方法,結(jié)合具體案例形式分析了防盜鏈的相關(guān)原理與node.js使用axios庫下載防盜鏈圖片的相關(guān)操作技巧,需要的朋友可以參考下
    2023-04-04

最新評論