模拟登录

这里要用到两个包:requests和json。requests使用前得先安装:pip install requests。

In [3]:

进群:548377875 即可获取数十套PDF哦!

import requests

import json

打开地理空间数据云的登录页面。按F12进入开发者工具台,在Element栏目,我们找到登录的表单,可以看到提交到后台有6个参数:

csrfmiddlewaretoken:经过多次测试,该值固定为“mzqcGIDTWJbmIo7UFTGI3gKYEotYMFEh”不变

next:该值为空,但必须要有

userid:为登录账号

password:登录密码

captcha_0:这是一个隐藏的参数,这个参数对应的验证码,可以直接复制过来

captcha_1: 验证码

为了防止报403错误,我们得在请求中加入header和cookie,这个直接从浏览器中复制过来即可,但要把格式改成python字典形式。

数据准备好后,用requests.session()来发送请求,这样的话可以保存登录后的cookies,避免 接下来爬取数重新去拿cookies

In [4]:

def login(session):

url="http://www.gscloud.cn/accounts/validate" # 地理空间数据云的用户验证网址

data={

"csrfmiddlewaretoken":"mzqcGIDTWJbmIo7UFTGI3gKYEotYMFEh", # 在浏览器控制台获得

"next":"", # 在浏览器控制台获得,一定要有

"userid":"[email protected]", # 登陆账户

"password":"123456789", # 登陆密码

"captcha_0":"9a27b5da81e71078d97226fd10ea23b47beb6ba7",

"captcha_1":"WFJG"

}

headers={

‘User-Agent‘: ‘Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.99 Safari/537.36‘,

"Referer":"http://www.gscloud.cn/accounts/login",

"Accept": "application/json, text/javascript, */*; q=0.01"

}

cookie={"csrftoken":"mzqcGIDTWJbmIo7UFTGI3gKYEotYMFEh","_next_":"/"}

r=session.post(url=url,data=data,headers=headers,cookies=cookie)

code=json.loads(r.text)[‘code‘] # 0代表登陆成功

if code==0:

print("登陆成功")

return 1

else:

print("登陆失败")

return 0

if __name__ == ‘__main__‘:

session=requests.session()

login(session)

获得指定数据列表

登录成功后,我们就可以下载数据了,下载数据前我们先查询想要的数据 这里我通过行列号来查询Landsat8数据:

tableInfo:表示返回数据的基本配置,其中pagesize表示每页的数量

productId:表示数据类型,Landsat8为411

data:path和row表示数据的行列号范围

最后将所有数据名称保存在一个列表中

In [5]:

url="http://www.gscloud.cn/search/query"

data={

"tableInfo": ‘{"offset":0,"pageSize":100,"totalPage":10,"totalSize":96,"sortSet":[{"id":"datadate","sort":"desc"}],"filterSet":[{"id":"dataexists","value":"1"}]}‘,

"productId": 411,

"datatype": "OLI_TIRS",

"data": ‘{"path":"121-121","row":"40-40"}‘}

r = session.post(url, data=data )dicts = json.loads(r.text)[‘data‘]

批量下载数据

获得数据列表后,就可以拼接下载链接,然后下载数据了

cloud_cover表示云量,剔除云量过大的数据

d_url:表示下载链接

因为遥感影像数据比较大,为了能在控制台看到下载进度,这里可以将下载分段进行,在请求中必须加上stream=True,然后通过respon.iter_content(chunk_size=chunk_size)设置每次下载的大小

In [ ]:

for ds in dicts:

cloud_cover = float(ds["cloudcover"]) #云量

if cloud_cover< 20.0:

size=0

d_url="http://www.gscloud.cn/sources/download/411/"+ds["dataid"]+"/bj" # 构建下载地址

d = session.get(d_url,stream=True)

chunk_size=1024000 #每次下载数据的大小

content_size=int(d.headers[‘content-length‘]) #文件总大小

print("文件总大小为:"+str(content_size/1024/1024))

with open("data/"+ds["dataid"]+".tar.gz", "wb") as code:

for data in d.iter_content(chunk_size=chunk_size):

code.write(data)

size+=len(data) #已下载文件大小

print(‘已经下载:%.4f %%‘ % (size*100.00/content_size))

如何用python批量下载数据_Python批量下载地理空间数据云数据!Python无所不能!...相关推荐

  1. DEM数据下载——以地理空间数据云为例

    数字高程模型(Digital Elevation Model)是进行地形分析的重要基础,诸如坡度.坡向及水文分析等都在此基础上进行.今天,我们一起来聊一聊一种DEM数据常见下载方式. 按照惯例,先将网 ...

  2. 从地理空间数据云下载数据后该如何操作

    首先,当然是要解压数据.以前上课的时候都是直接利用老师给我们发的实验数据,这次是期末论文考核,需要自己找数据,自己进行操作,浅浅记录以下我的学习过程吧. 当从地理空间数据云检索并下载完成数据后,我发现 ...

  3. element 怎么把数据写到日历表上_数据集 | 地理空间数据云30m的DEM爬取

    DEM数据是我们经常用到的一种数据,小编今天就带大家一块看一下怎么用python来爬取地理空间数据云的30m的DEM数据. 我们要爬取DEM数据首先还是要有一个地理空间数据云的账号.小伙伴们如果没有的 ...

  4. ROS:bag数据包内容提取——雷达点云数据和imu数据

    通常在利用ros采集传感器数据时,我们会得到一个包含多个传感器数据的bag数据包,下面将会介绍从bag数据包提取雷达点云数据和imu数据的方法. 系统版本:Ubuntu20.04 ROS版本:Noet ...

  5. 目前缺少用于语义分割的 3D LiDAR 数据吗?关于三维点云数据集和方法的调查

    目前缺少用于语义分割的 3D LiDAR 数据吗?关于三维点云数据集和方法的调查 原文 Are We Hungry for 3D LiDAR Data for Semantic Segmentatio ...

  6. 万国数据:“为了全方位保障混合云数据中心的安全,我们连猫都养了十只。”...

    "互联网+"时代背景下各大企业都在忙着互联网转型,企业用户出于安全和业务灵活性的考虑,更愿意将数据存放在私有云中,但是同时又希望可以获得公有云的计算资源和稳定性,在这种情况下,将公 ...

  7. python怎么读取csv的一部分数据_python批量读取csv文件 如何用python将csv文件中的数据读取成数组...

    如何用python把多个csv文件数据处理后汇总到新csv文件你看这月光多温柔,小编转头还能看见你,一切从未坍塌. 可以用pandas读取数据,首先把文件方同一个文件价里,然后对当前文件价的所有内容循 ...

  8. python查询千万级数据_Python批量删除mysql中千万级大量数据

    场景描述 线上mysql数据库里面有张表保存有每天的统计结果,每天有1千多万条,这是我们意想不到的,统计结果咋有这么多.运维找过来,磁盘占了200g,最后问了运营,可以只保留最近3天的,前面的数据,只 ...

  9. python处理千万级数据_Python批量删除mysql中千万级大量数据的脚本分享

    场景描述 线上Mysql数据库里面有张表保存有每天的统计结果,每天有1千多万条,这是我们意想不到的,统计结果咋有这么多.运维找过来,磁盘占了200G,最后问了运营,可以只保留最近3天的,前面的数据,只 ...

最新文章

  1. scala break continue
  2. Spring常见的十八中异常Exception
  3. 程序员面试系列——约瑟夫环
  4. 初探swift语言的学习笔记九(OC与Swift混编)
  5. Spark _25.plus _使用idea读取Hive中的数据加载成DataFrame/DataSet(四)
  6. 学习图(最短路径)算法
  7. 83行代码通关攻略|据说看的人都过了
  8. 西门子S7-1200控制V90伺服
  9. html在线编辑器合并单元格,Bootstrap实现的表格合并单元格示例
  10. java计算机毕业设计失物招领信息交互平台源代码+数据库+系统+lw文档
  11. Computer:计算机测试理论(开发/测试/上线)之DEV、SIT、UAT、PRD四套环境(测试环境/开发环境/生产环境)详细介绍之详细攻略
  12. 历届上海国际电影节获奖名单
  13. java 中国象棋下载不用vip,单机象棋手机版免费版下载-单机象棋最新版v1.4.2 不联网版-腾牛安卓网...
  14. angular async和await (实用)
  15. swift 在linux系统,Linux下搭建Swift语言开发学习环境
  16. HasS Python 温湿度检测系统及小程序实现 (一) 温湿度检测及数据上云
  17. IJCAI 2023顶会将改在中国澳门举办!三位中国学者任本地主席!
  18. 国密SM2算法密钥派生函数KDF的实现
  19. 计算机睡眠状态游戏影响,孩子沉迷于网络游戏,不仅影响睡眠,更会影响……...
  20. 录音服务器修复中是什么原因,在母带中修复音频的 10 个常用方法

热门文章

  1. 盘点北京冬奥的AI“黑科技”
  2. ECharts gauge制作钟表
  3. PG跨服务器的数据拷贝以及往pl/proxy集群中插入数据
  4. [IOS APP]推拿-毕飞宇有声小说
  5. 数据分析-1.必备的三大能力
  6. 新能源汽车整车控制器VCU学习模型
  7. ZZULIOJ:1089: 阶乘的最高位
  8. c# wpf 单选字体_WPF中的字体改善
  9. js在当前时间后或前添加或减少几个月
  10. idea中修改中文字体为微软雅黑