node爬虫

 const  http = require('http');
 const  fs = require('fs');
   const  moment = require('moment');
let  baseUrl = "http://data.cma.cn/weatherGis/web/bmd/VisDataDef/getVisData?datacode=";

let kindArr = [
    {
        name:"qiwen",
        dataCode: "NAFP_CLDAS2.0_RT_JPG_TMP",

    },
    {
        name:"shidu",
        dataCode: "NAFP_CLDAS2.0_RT_JPG_SHU",
    },
    {
        name:"fengsu",
        dataCode: "NAFP_CLDAS2.0_RT_JPG_WIN",
    },
    {
        name:"qiya",
        dataCode: "NAFP_CLDAS2.0_RT_JPG_PRS",
    },
    {
        name:"jiangshui",
        dataCode: "NAFP_CLDAS2.0_RT_JPG_PRE",
    },
    {
        name:"duanbofushe",
        dataCode: "NAFP_CLDAS2.0_RT_JPG_SSRA",
    }
]
let startTime = moment("20170501");
function getData(rq,dataCode,filename){
    let date = moment(rq).format("YYYYMMDD");
    let url = baseUrl + dataCode + "&d_datetime=" + date;
    http.get(url, function(response){
        let data = "";
        response.setEncoding('utf8')
        response.on('data', function(chunk){
            data+=chunk;
        })
        response.on('end', function(){
            data = JSON.parse(data);
            let imgArr = {
                date : data.maxdate,
                data : []
             };
             for(obj of data.data){
                imgArr.data.push(obj.fileURL);
            }
             imgArr = JSON.stringify(imgArr);
             let newBuildPath = "./data/" + filename + "/"+data.maxdate+'.txt';
                /*
                * 今天之前的数据
                * */
             if(moment(rq).add(1,"hour").isBefore(moment())){
                fs.access(newBuildPath,fs.constants.F_OK,(err)=>{
                       /*
                       * 文件不存在的情况下
                       * */
                     if(err){
                          // console.log("今天之前的数据");
                        fs.appendFile(newBuildPath,imgArr,()=> {;
                            if (startTime.isBefore(date)) {
                                rq = moment(date).subtract(1, 'day').format("YYYYMMDD");
                                getData(rq, dataCode, filename);
                             }
                         })
                     }else{
                        console.log("今天前的文件已经存在了");
                     }
                 });
                    /*
                    * 今天的数据
                    * */
             }else{
                 console.log("今天的文件");
                 fs.writeFile(newBuildPath,imgArr,()=> {;
                     if (startTime.isBefore(date)) {
                         rq = moment(date).subtract(1, 'day').format("YYYYMMDD");
                         getData(rq, dataCode, filename);
                     }
                 })
             }
         })
     }).on('error', function(e){
         console.log(e.message);
     })
 }
 kindArr.forEach( (e,i) => {
     getData(moment(),e.dataCode,e.name);
 })

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值