农村建设设计网站,北京市住房城乡建设部网站首页,深圳建站公司招聘,wordpress页面模板 选项没有模拟登录这里要用到两个包#xff1a;requests和json。requests使用前得先安装#xff1a;pip install requests。In [3]:进群#xff1a;548377875 即可获取数十套PDF哦#xff01;import requestsimport json打开地理空间数据云的登录页面。按F12进入开发者工具台…模拟登录这里要用到两个包requests和json。requests使用前得先安装pip install requests。In [3]:进群548377875 即可获取数十套PDF哦import requestsimport json打开地理空间数据云的登录页面。按F12进入开发者工具台在Element栏目我们找到登录的表单可以看到提交到后台有6个参数csrfmiddlewaretoken:经过多次测试该值固定为“mzqcGIDTWJbmIo7UFTGI3gKYEotYMFEh”不变next:该值为空但必须要有userid:为登录账号password:登录密码captcha_0:这是一个隐藏的参数这个参数对应的验证码可以直接复制过来captcha_1: 验证码为了防止报403错误我们得在请求中加入header和cookie这个直接从浏览器中复制过来即可但要把格式改成python字典形式。数据准备好后用requests.session()来发送请求这样的话可以保存登录后的cookies避免 接下来爬取数重新去拿cookiesIn [4]:def login(session):urlhttp://www.gscloud.cn/accounts/validate # 地理空间数据云的用户验证网址data{csrfmiddlewaretoken:mzqcGIDTWJbmIo7UFTGI3gKYEotYMFEh, # 在浏览器控制台获得next:, # 在浏览器控制台获得一定要有userid:123456789qq.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, */*; q0.01}cookie{csrftoken:mzqcGIDTWJbmIo7UFTGI3gKYEotYMFEh,_next_:/}rsession.post(urlurl,datadata,headersheaders,cookiescookie)codejson.loads(r.text)[code] # 0代表登陆成功if code0:print(登陆成功)return 1else:print(登陆失败)return 0if __name__ __main__:sessionrequests.session()login(session)获得指定数据列表登录成功后我们就可以下载数据了下载数据前我们先查询想要的数据 这里我通过行列号来查询Landsat8数据tableInfo表示返回数据的基本配置其中pagesize表示每页的数量productId表示数据类型Landsat8为411datapath和row表示数据的行列号范围最后将所有数据名称保存在一个列表中In [5]:urlhttp://www.gscloud.cn/search/querydata{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, datadata )dicts json.loads(r.text)[data]批量下载数据获得数据列表后就可以拼接下载链接然后下载数据了cloud_cover表示云量剔除云量过大的数据d_url表示下载链接因为遥感影像数据比较大为了能在控制台看到下载进度这里可以将下载分段进行在请求中必须加上streamTrue然后通过respon.iter_content(chunk_sizechunk_size)设置每次下载的大小In [ ]:for ds in dicts:cloud_cover float(ds[cloudcover]) #云量if cloud_cover 20.0:size0d_urlhttp://www.gscloud.cn/sources/download/411/ds[dataid]/bj # 构建下载地址d session.get(d_url,streamTrue)chunk_size1024000 #每次下载数据的大小content_sizeint(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_sizechunk_size):code.write(data)sizelen(data) #已下载文件大小print(已经下载%.4f %% % (size*100.00/content_size))标签版权申明本站文章部分自网络如有侵权请联系west999comoutlook.com特别注意本站所有转载文章言论不代表本站观点本站所提供的摄影照片插画设计作品如需使用请与原作者联系版权归原作者所有