通过node.js实现简单的爬虫

爬虫,来自百度百科的解释:

网络爬虫(又称为网页蜘蛛,网络机器人,在FOAF社区中间,更经常的称为网页追逐者),是一种按照一定的规则,自动爬取万维网信息的程序或脚本.

通俗来讲,假如你需要互联网上的信息,如商品价格,图片视频资源等,但你又不想或者不能自己一个一个去打开网页收集,这时候你便写了一个程序,让程序按照你指定好的规则去互联网上收集信息,这便是爬虫,我们熟知的百度,谷歌等搜索引擎背后其实也是一个巨大的爬虫;

那现在就来看一下我写的代码吧,

var http = require("http");

var https = require("https");

var fs = require("fs");
 
var cheerio = require("cheerio");
 
 var url="https://www.vcg.com/sets/521475526"
 let str=[];
 https.get(url,function(res){
     var chunks="";
     var results=[];
     res.on("data",function(chunk){
         //检查数据是不是可行的;
         chunks+=chunk

     })
     res.on("end",function(){
         // console.log(chunks);
         var $=cheerio.load(chunks);
         
         for(let i=1; i<30;i++){
            let htm=`#imageContent > div > section > figure:nth-child(${i}) > a > img`
          let metr= $(htm).attr('src');
          str.push("http:"+metr);
         }
         console.log(str[1])
         for(let i=1;i<30;i++){
            saveImage(str[i])
          }
   
     })
     
 })

 function saveImage(imageUrl){
     console.log(imageUrl);
    http.get(imageUrl, function (res) {
        res.setEncoding('binary');      //二进制(binary)

        var imageData ='';
        res.on('data',function(data){  //图片加载到内存变量
            imageData += data;
        }).on('end',function(){        //加载完毕保存图片
            if(!fs.existsSync("./images")){
                fs.mkdirSync("./images");
            }
            fs.writeFile('images/'+Math.random()+'.png',imageData,'binary',function (err) {  //以二进制格式保存
                if(err) throw err;
                console.log('保存成功');
            });
        });
    });
}

这段代码实现的效果是:下载三十张图片;

实现的过程是:

1.找到你想要下载的图片的地址

2.通过node中的内置模块fs中的writeFile方法写入即可;

我这段代码中用的的模块有fs,Http与cheerio;

说实话我这段代码应该算不上爬虫,如果你想要看更加详细node爬虫的话请去往这个地址:https://www.cnblogs.com/mybilibili/p/10577403.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值