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":"123456789@qq.com", # 登陆账户
"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无所不能!...相关推荐
- python自动批量下载_Python批量下载鼠标样式,自动化一条龙处理详解
前情提要 最近发现一款特别好看的壁纸软件,其中提供了鼠标样式,感觉很好看!很精致!心想肯定是请求下载然后启用鼠标样式, 那么发送请求,那不就可以用Python爬虫了吗? 其中鼠标样式下图: 爬虫环境 ...
- python excel取列_python取excel表格第一列数据-python操作excel,使用xlrd模块,获取某一列数据的......
怎样用python,读取excel中的一列数据 Python对Excel的读写主要有xlrd.copyxlwt.xlutils.openpyxl.xlsxwriter几种. 1.xlrd主要用来读百取 ...
- python壁纸程序代码_python批量下载壁纸的实现代码
复制代码 代码如下: #! /usr/bin/env python ##python2.7-批量下载壁纸 ##壁纸来自桌酷网站,所有权归属其网站 ##本代码仅做为交流学习使用,请勿用于商业用途,否则后 ...
- python 爬取菜鸟教程python100题,百度贴吧图片反爬虫下载,批量下载
每天一点点,记录学习 python 爬取菜鸟教程python100题 近期爬虫项目,看完请点赞哦: 1:python 爬取菜鸟教程python100题,百度贴吧图片反爬虫下载,批量下载 2:pytho ...
- android源码下载方法 批量下载 基于windows os
安装win版的Gitbash, 在这里 http://msysgit.googlecode.com/files/Git-1.6.0.2-preview20080923.exe. 选择默认安装路径(否则 ...
- 手机下载神器批量下载图片教程
手机版IDM下载神器批量下载图片漫画实际操作教程,现在介绍两个批量下载图片的方法 视频教程: 手机IDM下载器批量下载图片漫画实际操作 首先,打开你要下载图片的网页,同时打开手机版idm下载器和手机记 ...
- GUI 界面的免费音乐下载 支持批量下载
GUI 界面的免费音乐下载 支持批量下载 导包 import urllib import requests import wx import urllib import requests import ...
- 使用Flickr下载器批量下载Flickr的相册
相信用过Flickr下载图片的人都知道从Flickr上下载原图的操作有点小麻烦.楼主花了许久时间在网上寻找批量下载工具,一直没找到合适的.于是就自己动手写了个Win10应用:Flickr下载器,功能是 ...
- Earthdata(NASA)网站数据使用IDM(Internet Download Manager)下载器批量下载方法(MERRA-2为例)
最近给亲近的人写了教程,想着也给大家分享一下. MERRA-2 网址: GES DISC 这个网址是下载MERRA-2 instM_3d_asm_Np类型的数据文件,具体各部分字母代表什么,看下载列表 ...
- 如何用python批量下载数据_Python批量下载地理空间数据云数据!Python无所不能!...
模拟登录 这里要用到两个包:requests和json.requests使用前得先安装:pip install requests. In [3]: 进群:548377875 即可获取数十套PDF哦! ...
最新文章
- 达摩院NLP团队斩获六项世界冠军背后,让AI没有难懂的语言
- 90行Python代码,让张小龙的微信地球转起来
- 湖南加速恢复,“望城速度”强势打样
- SAP CRM WebClient UI搜索结果界面的扩展字段显示
- javaScript获取url中的参数
- matlab中腐蚀图像的编写,Matlab实现二值图像的腐蚀算法源代码
- FCPX插件:创意多画面组合动态分屏转场过渡 Multiscreen Transition
- 惊!字节实习生竟干这事到凌晨三点
- mysql获取多张表中的数据_mysql之多表查询
- 使用IntelliJ IDEA配置Erlang开发环境
- 统计学习(二):统计推断
- ComicEnhancerPro 系列教程
- F1-Score相关概念
- 并发编程学习(2)----volatile与synchronized
- 拓扑图是用什么软件画的?
- 火焰之纹章java武器代码_《火焰纹章回声:另一个英雄王》金手指全代码一览 代码大全...
- 苹果App Store搜索出Bug,网友:完美避开所有正确答案
- [INFO1110课件讲解 一] USYD悉尼大学INFO1110 ED lessons Week1 课件 作业 assignment讲解
- 天津大学学硕和专硕的区别_全日制考研与非全日制还有学硕专硕的区别!
- 【技巧】Markdown 交叉引用
热门文章
- Codesys提示【CmContainer/Wibukey runtime system is not installed】的解决方法
- Web前端基础学习——HTML5基础
- Java Map是否有序?
- net3.5离线一键安装工具_一键获取抖音直播源地址(无水印高清下载),无需安装Fiddler抓包工具...
- Mac环境变量的配置
- tensorflow中常用的激活函数
- 微信小程序布局理解——flex、block、inline
- 什么是竞品分析?竞品分析全流程解析
- 深度学习与计算机视觉教程(15) | 视觉模型可视化与可解释性(CV通关指南·完结)
- C#编写一个控制台程序,输入一个日期,输出这一天是星期几。