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))

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com

特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/551391.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

mysql 占用swap_查看swap占用情况

查看swap被占用的情况#!/bin/bash# Get current swap usage for all running processes# Erik Ljungstrom 27/05/2011# http://northernmost.org/blog/find-out-what-is-using-your-swap/SUM0OVERALL0for DIR in find /proc/ -maxdepth 1 -type d | egrep "^/proc/[0-9]&q…

python37.dll可能与您正在运行_模块可能与您正在运行的Windows版本不兼容。检查该模块是否与regsvr32.exe的x86或x64...

今天一个网友群里留言&#xff0c;他win8的系统&#xff0c;下载我们的软件无法正常运行&#xff0c;原来他的win8是64位的系统&#xff0c;而我们的软件是32位&#xff0c;而且这个软件还需要一个dll文件&#xff0c;没有注册就无法使用&#xff0c;参考下面的方法解决了1.把T…

java api math_JAVA 函数 Math API

JAVA 函数 Math APIMath.PI 记录的圆周率Math.E 记录e的常量Math中还有一些类似的常量&#xff0c;都是一些工程数学常用量。Math.abs() 求绝对值Math.sin() 正弦函数Math.asin() 反正弦函数Math.cos() 余弦函数Math.acos() 反余弦函数Math.tan() 正切函数Math.atan() 反正切函…

python包的init文件_Python模块包中__init__.py文件功能分析

本文实例讲述了Python模块包中__init__.py文件功能。分享给大家供大家参考&#xff0c;具体如下&#xff1a;用django做开发已经一年多的时间&#xff0c;但基本没注意python模块中__init__.py文件存在的意义&#xff0c;偶然看到对它的介绍吓一大跳&#xff0c;这个文件太重要…

java obervable_RxJava中Observable,Completable和Single之间有什么区别

Observable 是通用ReactiveX构建块&#xff0c;它是随时间发送值的事件源 . (因此存在ReactiveX扩展到的每种语言)简而言之&#xff0c;Observable事件是&#xff1a;onNext *(onCompleted | onError)&#xff1f; /(*零或更多&#xff1f; - 零或1)Single和Completable是RxJav…

span 里面的文字不显示_“无糖饮料”显示不含糖,为何还这么甜?原来里面加了这个...

长时间的高温天气让人离不开各种饮料&#xff0c;尤其是冰冻过之后味道更清爽的各种水。当你在外面晒着大太阳汗流浃背&#xff0c;突然听到扭开可乐雪碧瓶盖的那一声“ci~~~~”的时候&#xff0c;是不是瞬间有种眼前有个游泳池的感觉&#xff1f;且慢&#xff0c;更适合夏天的…

java的visitor模式_java设计模式(二十一)访问者模式(Visitor)

介绍访问者模式(Visitor Pattern)&#xff1a;表示一个作用于某对象结构中的各元素的操作&#xff0c;它使我们可以在不改变各元素的类的前提下定义作用于这些元素的新操作。访问者模式是一种对象行为型模式。简单来说&#xff0c;访问者模式就是一种分离对象数据结构与行为的方…

python多元函数求极小值_使用遗传算法求二元函数的最小值

二元函数为yx1^2x2^2,x∈[-5,5]NIND121; %初始种群的个数(Number of individuals)NVAR2; %一个染色体(个体)有多少基因PRECI20; %变量的二进制位数(Precision of variables)MAXGEN200; %最大遗传代数(Maximum number of generations)GGAP0.8; %代沟(Generation gap)&#xff0c…

testlink mysql配置_TestLink安装配置手册

TestLink安装配置手册范围本文仅作为安装和配置TestLink的参考文档。本文的第一部分为TestLink的安装步骤&#xff0c;第二部分是TestLink的配置方法。本文和其他相关文档可在中寻求帮助一般TestLink安装的步骤如下&#xff1a;1.下载TestLink2.解压文件3.创建数据库4.导入缺省…

python matlibplot绘制矩阵_matplotlib.pyplot.matshow 矩阵可视化实例

这是一个绘制矩阵的函数。用matshow绘制矩阵的例子&#xff1a;import matplotlib.pyplot as pltimport numpy as npdef samplemat(dims):"""Make a matrix with all zeros and increasing elements on the diagonal"""aa np.zeros(dims)for i …

如果有一个人在我创业之前告诉我这些

听别人的个人经历&#xff0c;并持保留态度&#xff0c;结合自己用来参考。 首先验证想法。不要浪费时间来建造无人需要的东西。扼杀你的自我。 创业内容不在于自我&#xff0c;而是关于用户。必须去想用户想要什么&#xff0c;而不是我想要什么的。不要盲目躺平顺从投资者&…

时分秒 java_JAVA 时分秒累加

一、简介有个需求是&#xff0c;累加通话时长&#xff0c;把上次通话时长加上本次通话时长&#xff0c;依次累加。二、实现Testpublic void TestA() throws ParseException {SimpleDateFormat myFormatter new SimpleDateFormat("HH:mm:ss");SimpleDateFormat forma…

python插件化设计_python - 插件化编程

引用2018-11-06 python插件式框架开发https://www.jianshu.com/p/a472f44c7161python 优雅地实现插件架构https://www.cnblogs.com/hhh5460/p/6681363.html一. classmethod function装饰器1.1 项目结构├─ project├─ run.py├─ app├─ __init__.py├─ main.py├─ platf…

java 如何实现对象克隆_Java对象克隆

Java不提供克隆(复制)对象的自动机制。克隆对象意味着逐位复制对象的内容。要支持克隆操作&#xff0c;请在类中实现clone()方法。Object类中的clone()方法的声明如下&#xff1a;protected Object clone() throws CloneNotSupportedExceptionclone()方法声明为protected。 因此…

python 默认配置文件_python各类配置文件写法

1. csv文件csv&#xff1a;Comma-Separated Values半结构化数据逗号分割值&#xff0c;可以使用office或者wps打开。模块&#xff1a;csvcsv.reader(csvfile,dialect’excel’,**fmtparams)csv.writer(csvfile,dialect’excel’,**fmtparams)返回一个DictWriter实例。主要支持的…

java mvc建包结构_Java SSM框架的配置方法、MVC结构的分析、响应的流程

今天头一次配置成功一个SSM框架&#xff0c;兴奋之余&#xff0c;还应该从使用的角度&#xff0c;将整个ssm配置的方法&#xff0c;配置的原因&#xff0c;认真的分析一下。在结束了对SSM框架简单的分析之后&#xff0c;就要开始回归基础&#xff0c;全面的认真复习。所以这个文…

英特尔显示器音频_英特尔也玩马甲?有关USB TypeC的冷知识你了解多少

随着Type-C接口的不断发展&#xff0c;这个接口也成为越来越多设备的标配&#xff0c;除了出现在手机、平板电脑和笔记本电脑等移动设备上&#xff0c;显卡这样的设备也开始配备Type-C接口了&#xff0c;本周末&#xff0c;小编为大家收集了一些有关Type-C接口的冷知识&#xf…

java drawingpanel_Java DrawingPanel.getHeight方法代码示例

import org.opensourcephysics.display.DrawingPanel; //导入方法依赖的package包/类/*** Paint the contour.* param g*/public synchronized void draw(DrawingPanel panel, Graphics g) {if(!visible||(griddatanull)) {return;}if(!autoscaleZ && showColoredLevel…

python激活虚拟环境source不是内部或外部_激活虚拟环境的问题

F:\sdk\imooc_request>virtualenv envname --no-setuptools --no-pip --no-wheelUsing base prefix f:\\编程\\pycharmNew python executable in F:\sdk\imooc_request\envname\Scripts\python.exeF:\sdk\imooc_request>source .env/bin/activatesource 不是内部或外部命…

如何允许网页中的编辑器访问剪切板_Vditor下一代的 Markdown 编辑器,为未来而构建...

❝Vditor 是一款浏览器端的 Markdown 编辑器&#xff0c;支持所见即所得(富文本)、即时渲染(类似 Typora)和分屏预览模式。它使用 TypeScript 实现&#xff0c;支持原生 JavaScript、Vue、React、Angular&#xff0c;提供桌面版❞Markdown背景随着 Markdown 排版方式的普及&…