XIAOBAI GIS

nodejs爬虫下载文件(arcgis api for js sdk包)

已被阅读 1409 次 | 文章分类: nodejs | 2021-06-21 23:42

做过arcgis webgis二次开发的同学应该深有体会,arcgis api for js下载一波三折,首先需要到官网注册账号,然后下载所需版本api,但是该网站对国内网速不友好,有时候几十m文件下载很慢,所以我写脚本爬取下载使用,下面是全部的nodejs代码,本站也将下载的文件提供出来,方便大家下载, arcgis api for js所有版本

1 下载主文件脚本-index.js

新建文件夹,然后新建index.js,键入如下代码

                                            
const request = require('request');
const fs = require('fs');
const path = require('path');
const ApiPromise = require('./getAPiList');
const config = require('./config');
// 创建文件夹目录
var dirPath = path.join(__dirname, 'file');
let token = config.token;
ApiPromise.then(list => {
  debugger;
  // 已经存在的文件
  var existedApis = fs.readdirSync(dirPath);
  for (let i = 0; i < list.length - 1; i++) {
    // 不存在则下载
    let item = list[i];
    if (existedApis.indexOf(item.name) == -1) {
      let url = `https://downloads.arcgis.com/dms/rest/download/secured/${item.name}?token=${token}&folder=${item.folder}`;
      request(url, function(error, response, body) {
        if (!error && response.statusCode == 200) {
          // 获取下载路径
          let zipUrl = JSON.parse(response.body).url.toString();
          console.log(zipUrl);
          let startTime = new Date().getTime();
          let stream = fs.createWriteStream(path.join(dirPath, `${item.name}`));
          request(zipUrl)
            .pipe(stream)
            .on('close', function(err) {
              let total = parseFloat((new Date().getTime() - startTime) / 1000);
              console.log(`${item.name}下载完毕,耗时${total}s`);
              process.stdout.write('\x07');
            });
        }
      });
    } else {
      console.log('已經存在');
    }
  }
});
                                            
                                        

本文件中,依赖包有以下

path,fs 是nodejs内置的包

request包,是我们用来爬虫,请求接口的包,需要自己安装,在根目录执行 npm install --save request即可,会自动生成package.json文件;

config是将登陆后获取的token配置下来;getAPiList是获取所有sdk的zip下载链接

2 config.js

这里的token,是我注册账号后,获取的token,大家有兴趣可以自己注册后,替换为自己的token值

                                            
const config = {
  token:
    '-vnDPqZacQU_2I97Ww2AQWr_aajbRot-T9ET9xjkJLszN0VYbJPlHFpjcMjhpA8StucCP0uKgWugDCfEDDa6jYEOdT_2HzFiccplMpGjh8f_Lf7Ta1AggLjnSd6iuLCnXPeqTK6D6Fq07vCAXWtmfZgHB471fnvkwu0IVktCgJaW2vmpuDrnLBHjxYbKUKpX'
};
module.exports = config;
                                            
                                        

3 getAPiList.js

                                            
var request = require('request');
let url = `https://developers.arcgis.com/data/downloads.json`;
let result;
let infoArr = [];
module.exports = new Promise(function(resolve, reject) {
  request(url, function(error, response, body) {
    debugger;
    if (!error && response.statusCode == 200) {
      result = JSON.parse(response.body);
      result = result.filter(item => {
        return item.product_name == 'ArcGIS API for JavaScript';
      })[0];
      let allVersions = result.downloads;
      let versionkeys = Object.keys(allVersions);
      versionkeys.forEach(version => {
        let version_number = allVersions[version].version_number;
        let apifile = allVersions[version].files[0];
        let obj = {};
        obj['name'] = apifile.filename;
        obj['folder'] = apifile.folder;
        infoArr.push(obj);
      });
      resolve(infoArr);
    }
  });
});
                                            
                                        

/net/upload/image/20210621/ac0a7ed6-866b-4618-86f6-6efbc36ef18d.jpg

上一篇: redis数据库的正确启动方式
下一篇: web前端开发中滚动条实现懒加载的流程
浏览热榜:
  • 1 【threejs效果】流光以及扩散波效果
  • 2 【threejs基础:使用OBJLoader】加载obj模型
  • 3 【threejs基础:加载gltf】模型加载和压缩
  • 4 vs2019如何使用mysql数据库 亲测可用
  • 5 常见的bat命令,获取日期及格式化日期
  • 6 【threejs基础:使用MTLLoader】加载材质OBj模型
  • 7 在vue项目中适配1080p和2k分辨率屏幕
  • 8 【vscode插件开发】(二) 右键菜单激活插件
  • 9 rtsp视频流在线地址及使用nodejs实现网页播放rtsp视频流
  • 10 浅谈浏览器缓存策略

QQ:3410192267 | 技术支持 微信:popstarqqsmall

Copyright ©2017 xiaobaigis.com . 版权所有  鲁ICP备17027716号

深圳SEO优化公司布吉百姓网标王推广石岩百姓网标王龙岗品牌网站设计坪山SEO按天计费南澳营销网站民治企业网站设计惠州阿里店铺运营南山模板网站建设广州企业网站建设南联百搜词包广州外贸网站设计布吉网络推广福永企业网站制作横岗网站改版木棉湾模板推广西乡标王盐田网站排名优化坑梓网站推广系统南联百搜标王坂田外贸网站制作大浪模板网站建设南山关键词按天扣费同乐建设网站大浪如何制作网站大鹏seo排名吉祥标王广州网站推广永湖seo优化龙岗网站搜索优化沙井百搜标王歼20紧急升空逼退外机英媒称团队夜以继日筹划王妃复出草木蔓发 春山在望成都发生巨响 当地回应60岁老人炒菠菜未焯水致肾病恶化男子涉嫌走私被判11年却一天牢没坐劳斯莱斯右转逼停直行车网传落水者说“没让你救”系谣言广东通报13岁男孩性侵女童不予立案贵州小伙回应在美国卖三蹦子火了淀粉肠小王子日销售额涨超10倍有个姐真把千机伞做出来了近3万元金手镯仅含足金十克呼北高速交通事故已致14人死亡杨洋拄拐现身医院国产伟哥去年销售近13亿男子给前妻转账 现任妻子起诉要回新基金只募集到26元还是员工自购男孩疑遭霸凌 家长讨说法被踢出群充个话费竟沦为间接洗钱工具新的一天从800个哈欠开始单亲妈妈陷入热恋 14岁儿子报警#春分立蛋大挑战#中国投资客涌入日本东京买房两大学生合买彩票中奖一人不认账新加坡主帅:唯一目标击败中国队月嫂回应掌掴婴儿是在赶虫子19岁小伙救下5人后溺亡 多方发声清明节放假3天调休1天张家界的山上“长”满了韩国人?开封王婆为何火了主播靠辱骂母亲走红被批捕封号代拍被何赛飞拿着魔杖追着打阿根廷将发行1万与2万面值的纸币库克现身上海为江西彩礼“减负”的“试婚人”因自嘲式简历走红的教授更新简介殡仪馆花卉高于市场价3倍还重复用网友称在豆瓣酱里吃出老鼠头315晚会后胖东来又人满为患了网友建议重庆地铁不准乘客携带菜筐特朗普谈“凯特王妃P图照”罗斯否认插足凯特王妃婚姻青海通报栏杆断裂小学生跌落住进ICU恒大被罚41.75亿到底怎么缴湖南一县政协主席疑涉刑案被控制茶百道就改标签日期致歉王树国3次鞠躬告别西交大师生张立群任西安交通大学校长杨倩无缘巴黎奥运

深圳SEO优化公司 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化