最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

使用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)建服務(wù)

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

//創(chuàng)建服務(wù)
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)建服務(wù)
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)建服務(wù)
    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的require()及基本用法

    node.js的require()及基本用法

    Node.js使用CommonJS模塊格式,通過require語句加載模塊,源碼分析了require語句的內(nèi)部運行機制,包括基本用法、Module構(gòu)造函數(shù)、模塊實例的require方法、模塊的絕對路徑、加載模塊等,本文介紹node.js的require()及基本用法,感興趣的朋友一起看看吧
    2025-02-02
  • 一文帶你了解Node.js進程管理工具PM2

    一文帶你了解Node.js進程管理工具PM2

    Node.js進程管理工具PM2是一個開源的工具,用于管理和監(jiān)控Node.js應用程序的運行,它可以幫助您方便地啟動、停止、重啟和監(jiān)視多個Node.js進程,并提供了許多有用的功能,所以本文就和大家一起了解一下PM2,需要的朋友可以參考下
    2023-07-07
  • node.js如何自定義實現(xiàn)一個EventEmitter

    node.js如何自定義實現(xiàn)一個EventEmitter

    我們了解到,Node采用了事件驅(qū)動機制,而EventEmitter就是Node實現(xiàn)事件驅(qū)動的基礎(chǔ),本文主要介紹了node.js自定義實現(xiàn)EventEmitter,感興趣的可以了解一下
    2021-07-07
  • HTTP JSON接口模擬工具Interfake快速入門教程

    HTTP JSON接口模擬工具Interfake快速入門教程

    這篇文章主要為大家介紹了HTTP JSON接口模擬工具Interfake快速入門教程,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-06-06
  • 在Node.js中實現(xiàn)延遲和超時的方法

    在Node.js中實現(xiàn)延遲和超時的方法

    Node.js 是一個功能強大的 JavaScript 運行時,它提供了幾種通過延遲和超時來控制執(zhí)行流的方法,本指南將引導你完成在 Node.js 中實現(xiàn)延遲和超時的要點,確保你的應用程序平穩(wěn)高效地運行,需要的朋友可以參考下
    2025-09-09
  • Restify中接入Socket.io報Error:Can’t set headers的錯誤解決

    Restify中接入Socket.io報Error:Can’t set headers的錯誤解決

    這篇文章主要給大家介紹了在Restify中接入Socket.io報Error:Can’t set headers的錯誤解決方法,文中介紹的非常詳細,對大家具有一定的參考價值,需要的朋友們下面來一起看看吧。
    2017-03-03
  • node.js使用redis儲存session的方法

    node.js使用redis儲存session的方法

    這篇文章主要介紹了node.js使用redis儲存session的方法,本文給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下
    2018-09-09
  • node.js安裝及HbuilderX配置詳解

    node.js安裝及HbuilderX配置詳解

    這篇文章主要介紹了node.js安裝及HbuilderX配置的相關(guān)資料,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-03-03
  • node.js實現(xiàn)pdf與圖片互轉(zhuǎn)代碼示例

    node.js實現(xiàn)pdf與圖片互轉(zhuǎn)代碼示例

    因工作需求,記錄一次如何在Node中pdf與圖片互轉(zhuǎn)各種操作,這篇文章主要給大家介紹了關(guān)于node.js實現(xiàn)pdf與圖片互轉(zhuǎn)的相關(guān)資料,文中通過代碼介紹的非常詳細,需要的朋友可以參考下
    2024-04-04
  • 在Linux系統(tǒng)上升級Node.js遇到GLIBC依賴問題的多種解決方案

    在Linux系統(tǒng)上升級Node.js遇到GLIBC依賴問題的多種解決方案

    在現(xiàn)代 Web 開發(fā)和 DevOps 實踐中,Node.js 是一個不可或缺的工具,在升級 Node.js 版本時,尤其是在較舊的 Linux 系統(tǒng)上,可能會遇到一些依賴庫不兼容的問題,特別是與 GLIBC 和 GLIBCXX 相關(guān)的錯誤,本文將詳細介紹如何解決這個依賴問題,需要的朋友可以參考下
    2025-01-01

最新評論

延寿县| 宿松县| 新营市| 灌阳县| 云龙县| 石景山区| 太康县| 晋州市| 房山区| 广丰县| 老河口市| 田林县| 平安县| 宁远县| 辛集市| 西乌珠穆沁旗| 绿春县| 赤水市| 师宗县| 灵寿县| 林芝县| 应城市| 宁国市| 郯城县| 新田县| 张家口市| 策勒县| 林西县| 陆丰市| 田林县| 浦城县| 深水埗区| 宜兰市| 平利县| 阿拉善左旗| 安乡县| 北流市| 扎鲁特旗| 新田县| 泽州县| 南乐县|