node.js爬取數據

node.js爬取數據

node能夠作不少事情,好比爬蟲、通訊等等。 今天就先作一個爬蟲,爬取一些百度圖片。

首先咱們須要引入一些模塊node

var http = require("http");
var https = require("https");
var fs = require("fs");
var cheerio = require("cheerio");

這裏須要注意cheerio是擴展模塊須要裝一下npm

npm install cheerio  --save

而後要把這些圖片的url地址獲取下來數組

const wz="http://image.baidu.com/";
  
var strHtml="";
var resuts=[];//定義一個空數組,將數據內容存在裏面 
http.get(wz,function(res){
    //接收數據
    res.on("data",function(data){
        strHtml+=data; 
    });
     //接收完成
    res.on("end",function(){
       var $=cheerio.load(strHtml);
       //找到這些圖片的位置
       $(".img_single_box img").each(function(index,item){
            resuts.push($(item).attr('src'))
       });
       console.log(resuts);
     //循環調用圖片函數  
    for(var i=0;i<resuts.length;i++){
        saveImage(resuts[i]);
    }


    });
});

而後根據圖片URL地址保存成圖片dom

function saveImage(resuts){
        https.get(resuts,function(res){
            
            res.setEncoding('binary');//二進制
    
            var imageData="";//將圖片加載到內存中
            res.on("data",function(a){
                imageData+=a; 
            }).on("end",function(){
                //建立文件夾,若是有就不用建立
                if(!fs.existsSync('./images')){
                    fs.mkdirSync('./images');
                };
                //保存圖片
                 fs.writeFile(".images/"+Math.random()+".png",imageData,"binary",function(err){
                    if(!err)
                    console.log("保存成功");
            });
            
            });
        });
    }
相關文章
相關標籤/搜索