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("保存成功");
            });
            
            });
        });
    }
相关文章
相关标签/搜索