模拟登录

这里要用到两个包: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无所不能!...相关推荐

  1. python自动批量下载_Python批量下载鼠标样式,自动化一条龙处理详解

    前情提要 最近发现一款特别好看的壁纸软件,其中提供了鼠标样式,感觉很好看!很精致!心想肯定是请求下载然后启用鼠标样式, 那么发送请求,那不就可以用Python爬虫了吗? 其中鼠标样式下图: 爬虫环境 ...

  2. python excel取列_python取excel表格第一列数据-python操作excel,使用xlrd模块,获取某一列数据的......

    怎样用python,读取excel中的一列数据 Python对Excel的读写主要有xlrd.copyxlwt.xlutils.openpyxl.xlsxwriter几种. 1.xlrd主要用来读百取 ...

  3. python壁纸程序代码_python批量下载壁纸的实现代码

    复制代码 代码如下: #! /usr/bin/env python ##python2.7-批量下载壁纸 ##壁纸来自桌酷网站,所有权归属其网站 ##本代码仅做为交流学习使用,请勿用于商业用途,否则后 ...

  4. python 爬取菜鸟教程python100题,百度贴吧图片反爬虫下载,批量下载

    每天一点点,记录学习 python 爬取菜鸟教程python100题 近期爬虫项目,看完请点赞哦: 1:python 爬取菜鸟教程python100题,百度贴吧图片反爬虫下载,批量下载 2:pytho ...

  5. android源码下载方法 批量下载 基于windows os

    安装win版的Gitbash, 在这里 http://msysgit.googlecode.com/files/Git-1.6.0.2-preview20080923.exe. 选择默认安装路径(否则 ...

  6. 手机下载神器批量下载图片教程

    手机版IDM下载神器批量下载图片漫画实际操作教程,现在介绍两个批量下载图片的方法 视频教程: 手机IDM下载器批量下载图片漫画实际操作 首先,打开你要下载图片的网页,同时打开手机版idm下载器和手机记 ...

  7. GUI 界面的免费音乐下载 支持批量下载

    GUI 界面的免费音乐下载 支持批量下载 导包 import urllib import requests import wx import urllib import requests import ...

  8. 使用Flickr下载器批量下载Flickr的相册

    相信用过Flickr下载图片的人都知道从Flickr上下载原图的操作有点小麻烦.楼主花了许久时间在网上寻找批量下载工具,一直没找到合适的.于是就自己动手写了个Win10应用:Flickr下载器,功能是 ...

  9. Earthdata(NASA)网站数据使用IDM(Internet Download Manager)下载器批量下载方法(MERRA-2为例)

    最近给亲近的人写了教程,想着也给大家分享一下. MERRA-2 网址: GES DISC 这个网址是下载MERRA-2 instM_3d_asm_Np类型的数据文件,具体各部分字母代表什么,看下载列表 ...

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

    模拟登录 这里要用到两个包:requests和json.requests使用前得先安装:pip install requests. In [3]: 进群:548377875 即可获取数十套PDF哦! ...

最新文章

  1. 达摩院NLP团队斩获六项世界冠军背后,让AI没有难懂的语言
  2. 90行Python代码,让张小龙的微信地球转起来
  3. 湖南加速恢复,“望城速度”强势打样
  4. SAP CRM WebClient UI搜索结果界面的扩展字段显示
  5. javaScript获取url中的参数
  6. matlab中腐蚀图像的编写,Matlab实现二值图像的腐蚀算法源代码
  7. FCPX插件:创意多画面组合动态分屏转场过渡 Multiscreen Transition
  8. 惊!字节实习生竟干这事到凌晨三点
  9. mysql获取多张表中的数据_mysql之多表查询
  10. 使用IntelliJ IDEA配置Erlang开发环境
  11. 统计学习(二):统计推断
  12. ComicEnhancerPro 系列教程
  13. F1-Score相关概念
  14. 并发编程学习(2)----volatile与synchronized
  15. 拓扑图是用什么软件画的?
  16. 火焰之纹章java武器代码_《火焰纹章回声:另一个英雄王》金手指全代码一览 代码大全...
  17. 苹果App Store搜索出Bug,网友:完美避开所有正确答案
  18. [INFO1110课件讲解 一] USYD悉尼大学INFO1110 ED lessons Week1 课件 作业 assignment讲解
  19. 天津大学学硕和专硕的区别_全日制考研与非全日制还有学硕专硕的区别!
  20. 【技巧】Markdown 交叉引用

热门文章

  1. Codesys提示【CmContainer/Wibukey runtime system is not installed】的解决方法
  2. Web前端基础学习——HTML5基础
  3. Java Map是否有序?
  4. net3.5离线一键安装工具_一键获取抖音直播源地址(无水印高清下载),无需安装Fiddler抓包工具...
  5. Mac环境变量的配置
  6. tensorflow中常用的激活函数
  7. 微信小程序布局理解——flex、block、inline
  8. 什么是竞品分析?竞品分析全流程解析
  9. 深度学习与计算机视觉教程(15) | 视觉模型可视化与可解释性(CV通关指南·完结)
  10. C#编写一个控制台程序,输入一个日期,输出这一天是星期几。