如何用python批量下载数据_Python批量下载地理空间数据云数据!Python无所不能!...
模拟登录
这里要用到两个包: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无所不能!...相关推荐
- DEM数据下载——以地理空间数据云为例
数字高程模型(Digital Elevation Model)是进行地形分析的重要基础,诸如坡度.坡向及水文分析等都在此基础上进行.今天,我们一起来聊一聊一种DEM数据常见下载方式. 按照惯例,先将网 ...
- 从地理空间数据云下载数据后该如何操作
首先,当然是要解压数据.以前上课的时候都是直接利用老师给我们发的实验数据,这次是期末论文考核,需要自己找数据,自己进行操作,浅浅记录以下我的学习过程吧. 当从地理空间数据云检索并下载完成数据后,我发现 ...
- element 怎么把数据写到日历表上_数据集 | 地理空间数据云30m的DEM爬取
DEM数据是我们经常用到的一种数据,小编今天就带大家一块看一下怎么用python来爬取地理空间数据云的30m的DEM数据. 我们要爬取DEM数据首先还是要有一个地理空间数据云的账号.小伙伴们如果没有的 ...
- ROS:bag数据包内容提取——雷达点云数据和imu数据
通常在利用ros采集传感器数据时,我们会得到一个包含多个传感器数据的bag数据包,下面将会介绍从bag数据包提取雷达点云数据和imu数据的方法. 系统版本:Ubuntu20.04 ROS版本:Noet ...
- 目前缺少用于语义分割的 3D LiDAR 数据吗?关于三维点云数据集和方法的调查
目前缺少用于语义分割的 3D LiDAR 数据吗?关于三维点云数据集和方法的调查 原文 Are We Hungry for 3D LiDAR Data for Semantic Segmentatio ...
- 万国数据:“为了全方位保障混合云数据中心的安全,我们连猫都养了十只。”...
"互联网+"时代背景下各大企业都在忙着互联网转型,企业用户出于安全和业务灵活性的考虑,更愿意将数据存放在私有云中,但是同时又希望可以获得公有云的计算资源和稳定性,在这种情况下,将公 ...
- python怎么读取csv的一部分数据_python批量读取csv文件 如何用python将csv文件中的数据读取成数组...
如何用python把多个csv文件数据处理后汇总到新csv文件你看这月光多温柔,小编转头还能看见你,一切从未坍塌. 可以用pandas读取数据,首先把文件方同一个文件价里,然后对当前文件价的所有内容循 ...
- python查询千万级数据_Python批量删除mysql中千万级大量数据
场景描述 线上mysql数据库里面有张表保存有每天的统计结果,每天有1千多万条,这是我们意想不到的,统计结果咋有这么多.运维找过来,磁盘占了200g,最后问了运营,可以只保留最近3天的,前面的数据,只 ...
- python处理千万级数据_Python批量删除mysql中千万级大量数据的脚本分享
场景描述 线上Mysql数据库里面有张表保存有每天的统计结果,每天有1千多万条,这是我们意想不到的,统计结果咋有这么多.运维找过来,磁盘占了200G,最后问了运营,可以只保留最近3天的,前面的数据,只 ...
最新文章
- scala break continue
- Spring常见的十八中异常Exception
- 程序员面试系列——约瑟夫环
- 初探swift语言的学习笔记九(OC与Swift混编)
- Spark _25.plus _使用idea读取Hive中的数据加载成DataFrame/DataSet(四)
- 学习图(最短路径)算法
- 83行代码通关攻略|据说看的人都过了
- 西门子S7-1200控制V90伺服
- html在线编辑器合并单元格,Bootstrap实现的表格合并单元格示例
- java计算机毕业设计失物招领信息交互平台源代码+数据库+系统+lw文档
- Computer:计算机测试理论(开发/测试/上线)之DEV、SIT、UAT、PRD四套环境(测试环境/开发环境/生产环境)详细介绍之详细攻略
- 历届上海国际电影节获奖名单
- java 中国象棋下载不用vip,单机象棋手机版免费版下载-单机象棋最新版v1.4.2 不联网版-腾牛安卓网...
- angular async和await (实用)
- swift 在linux系统,Linux下搭建Swift语言开发学习环境
- HasS Python 温湿度检测系统及小程序实现 (一) 温湿度检测及数据上云
- IJCAI 2023顶会将改在中国澳门举办!三位中国学者任本地主席!
- 国密SM2算法密钥派生函数KDF的实现
- 计算机睡眠状态游戏影响,孩子沉迷于网络游戏,不仅影响睡眠,更会影响……...
- 录音服务器修复中是什么原因,在母带中修复音频的 10 个常用方法