Python—下载清华大学鹏城实验室遥感数据

news2024/10/7 16:20:29

当想下载清华大学鹏城实验室10m土地利用数据的时候,发现他们的下载方式很奇怪,只能一页页的点名称全选 ,然后批量下载,再一个个的加入浏览器下载,当一次下载过多就回卡顿和下载失败,所以就有了想用python进行下载的想法。
在这里插入图片描述

1 获取headers

F12打开控制台,看Network界面,然后随机下载一个文件
在这里插入图片描述
点击下载后,可以看到下载文件名,就可以得到自己的headers,这一步主要是为了获得“Authorization”进行身份认证
在这里插入图片描述

然后返回网页,查看网页源代码,发现文件的命名方式为“1-FROM_GLC10_2017-tif-fromglc10v01_”+经纬度,那我们就以“1-FROM_GLC10_2017-tif-fromglc10v01_”在源代码中搜索,可以获取所有的文件名
在这里插入图片描述

2 下载代码

代码只能下载有命名规律的文件,无规律的文件请自行排查下载

from http import cookiejar
from urllib import request
import os 
import re
import numpy as np
from subprocess import call
from multiprocessing import Pool

#填入自己获取的headers
headers={"Accept":"",
"Authorization":"",
"Referer":"",
"User-Agent":""   
}
#返回从网页源码中获取的文件名
def filename():
    password_manager = request.HTTPPasswordMgrWithDefaultRealm()
    password_manager.add_password(None, "http://data.starcloud.pcl.ac.cn", '账号', '密码')#自行修改
    cookie_jar = cookiejar.CookieJar()
    opener = request.build_opener(request.HTTPBasicAuthHandler(password_manager),request.HTTPCookieProcessor(cookie_jar))
    request.install_opener(opener)
    url="http://data.starcloud.pcl.ac.cn/zh/resource/1"
    myrequest = request.Request(url,headers=headers)
    response = request.urlopen(myrequest)
    html=response.read()
    names=re.findall(r'1-FROM_GLC10_2017-tif-fromglc10v01.*?"', html.decode('utf-8'))
    names=np.array(names)
    return names
  
#下载链接的构成为download_url+文件名
def download(name):
    download_url="http://data.starcloud.pcl.ac.cn/api/resourceFile/download/"
    name=name.split('"')[0]
    fileurl=download_url+name
    request1 = request.Request(fileurl,headers=headers)
    response1 = request.urlopen(request1)
    #自行修改下载文件夹
    filepath=os.path.join("E:/Download/2017_10m",fileurl.split("tif-")[-1]+".tif")
    if os.path.exists(filepath):#判断文件是否存在
        print(name + "exist")
    else:
        f = open(filepath,'wb')
        f.write(response1.read())
        f.close()
        print(name+"下载完成!")
    
def main():
    names=filename()
    po=Pool(5)
    po.map_async(download,names)    
    po.close()
    po.join()


if __name__ == '__main__':
    files = os.listdir("E:/Download/2017_10m") # 获取当前文件夹下的所有文件
    file_num = len(filename())
    while len(files)!=file_num: #python可能未下载完就中断,加个文件数判定
        print("未完全下载")
        main()
        files = os.listdir("E:/Download/2017_10m")

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

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

相关文章

SpringMVC之增删改查(CRUD)项目模拟

目录 前言 一、项目模拟部署 1.创建一个Maven项目 2. 导入所需依赖 数据库连接池(jdbc.properties) 加载驱动(spring-mybatis.xml) 配置数据库信息 ​编辑 日志文件配置(log4j.xml) Spring MVC与Maba…

高忆管理:南京取消限购 苹果新机或搭载潜望式镜头

昨日,两市股指盘中单边下行。到收盘,沪指跌1.13%报3122.35点,深成指跌1.84%报10321.44点,创业板指跌2.11%报2056.98点,科创50指数跌3.72%;两市算计成交7668亿元。行业方面,半导体板块大幅下挫&a…

Pyqt5-进度条(适用pyside2、pyside6)

本章,精选了几个好看的可用于实际项目中的进度条样式。先来看看几个图: 这些都是纯代码编写,本章没有废话,有的全是代码。 示例1-双半边进度条 import sys from PyQt5.QtCore import Qt, QTimer from PyQt5.QtGui import QPainter, QColor, QPen, QLinearGradient, QFont f…

live555音视频同步

文章目录 live555音视频同步通过testOnDemandRTSPServer.cpp实现,仅需修改部分代码即可,具体思路:注意具体代码(对testOnDemandRTSPServer.cpp进行修改)修改之后成功在所在目录下直接分步执行以下命令 点赞收藏加关注&…

MSYS2 如何切换镜像源(附带脚本自动修改)

这篇文章将总结【如何切换MSYS2镜像】,其实比较简单,但还是记录一下吧。 下面示例中附带一个脚本,这样你就不用一个个手动修改了。 1. 镜像服务配置文件 MSYS2 的所有镜像服务配置,都在其安装路径下的etc/pacman.d目录下 可以看到…

Vite + vue3 项目使用 amfe-flexible 和 postcss-pxtorem 实现不同屏幕自适应

amfe-flexible 和 postcss-pxtorem 可以一起使用来实现移动端的适配效果。 amfe-flexible 主要用于动态设置根元素字体大小(rem),以根据屏幕尺寸进行自适应布局。它会根据设备的屏幕宽度计算出根元素字体大小,并将其设置为页面的根…

无涯教程-JavaScript - IMLOG10函数

描述 IMLOG10函数以x yi或x yj文本格式返回复数的公共对数(以10为底)。可以从自然对数计算复数的公共对数,如下所示: $$\log_ {10}(x yi)(\log_ {10} e)\ln(x yi)$$ 语法 IMLOG10 (inumber)争论 Argument描述Required/OptionalInumberA complex number for which you …

osg 纹理烘焙

#include <osgViewer/ViewerEventHandlers> #include <osgViewer/Viewer> #include <osgDB/ReadFile>//render to texture,纹理烘焙 static osg::Texture* createRttTexture(int texWidth, int texHeight) {osg::ref_ptr<osg::Texture2D> texture new…

musl libc 动态加载:elf 应用程序入口函数 _start 到 main 的执行流程

前言 应用程序 elf ,如静态链接的应用程序,入口函数不是 main 函数,而是 _start 函数 从 _start 函数到 main 函数,经过 libc 的一系列初始化操作 _start -> _start_c -> ... -> main 动态编译链接的应用程序 elf,更是经历了 _dlstart -> _dlstart_c -> ..…

制作周变化日程组件

要实现的样子 实现的功能&#xff1a; 上面年月左右切换至改变月份&#xff0c;改变后显示月份的1号在的一周从周天开始 下面周历左右切换周&#xff0c;当存在1号的时候月份变为1号的月份和年份。 点击日程时间下面的日程变化&#xff08;日程上的点代表有日程信息&#xff09…

【白话机器学习系列】白话梯度下降

白话梯度下降 梯度下降是机器学习中最常见的优化算法之一。理解它的基本实现是理解所有基于它构建的高级优化算法的基础。 文章目录 优化算法一维梯度下降均方误差梯度下降什么是均方误差单权重双权重三权重三个以上权重 矩阵求导结论 优化算法 在机器学习中&#xff0c;优化是…

三维模型OBJ格式轻量化处理技术方法浅析

三维模型OBJ格式轻量化处理技术方法浅析 维模型的OBJ格式轻量化处理技术方法旨在减小模型文件大小、提高加载性能和优化渲染效果。本文将对三维模型OBJ格式轻量化处理技术方法进行浅析&#xff0c;并探讨其在数据压缩、几何简化和纹理优化等方面的应用。 首先&#xff0c;数据…

R语言统计学DOE实验设计:用平衡不完全区组设计(BIBD)分析纸飞机飞行时间实验数据...

全文链接&#xff1a;http://tecdat.cn/?p31010 平衡不完全区组设计&#xff08;BIBD&#xff09;是一个很好的研究实验设计&#xff0c;可以从统计的角度看各种所需的特征&#xff08;点击文末“阅读原文”获取完整代码数据&#xff09;。 最近我们被客户要求撰写关于BIBD的研…

【Linux从入门到精通】通信 | 共享内存(System V)

本篇文章接着上篇文章通信 | 管道通信&#xff08;匿名管道 & 命名管道&#xff09;进行讲解。本篇文章的中点内容是共享内存。 文章目录 一、初识与创建共享内存 1、1 什么是共享内存 1、2 共享内存函数 1、2、1 创建共享内存 shmget 1、2、2 ftok 生成 key 1、2、3 获取共…

nvm 在 Windows 上的使用

NVM&#xff08;Node Version Manager&#xff09;是一个用于管理和切换多个 Node.js 版本的工具。它允许你在同一台机器上同时安装和使用不同版本的 Node.js&#xff0c;而无需手动安装和卸载。 之前都是只安装一个版本的 node.js&#xff0c;该更新时更新&#xff0c;使得以前…

RK3568-GPIO控制

RK3568-GPIO控制 1. Sysfs接口 实现逻辑 芯片的GPIO由芯片的GPIO控制器来管理&#xff0c;GPIO控制器封装在芯片内部&#xff0c;控制器的驱动芯片厂家已经写好了。RK3568有五组GPIO控制器&#xff0c;每组管理32个引脚&#xff0c;对应/dev下的gpiochip0~4的设备节点。 Lin…

【Redis专题】RedisCluster集群运维与核心原理剖析

目录 课程内容一、Redis集群架构模型二、Redis集群架构搭建&#xff08;单机搭建&#xff09;2.1 在服务器下新建各个节点的配置存放目录2.2 修改配置&#xff08;以redis-8001.conf为例&#xff09; 三、Java代码实战四、Redis集群原理分析4.1 槽位定位算法4.2 跳转重定位4.3 …

【Linux】网络编程网络基础(C++)

目录 一、计算机网络背景 二、认识 "协议" 三、网络协议初识 【3.1】协议分层 【3.2】OSI七层模型 【3.3】TCP/IP五层(或四层)模型 四、网络传输基本流程 【4.1】网络传输流程图 【4.2】数据包封装和分用 五、网络中的地址管理 一、计算机网络背景 【独立…

用Python实现一个可定制风格的绘图系统

文章目录 调用绘图风格控件代码组织源代码base.pyaframe.pyalist.pyds.py Python绘图系统&#xff1a; &#x1f4c8;从0开始的3D绘图系统&#x1f4c9;一套3D坐标&#xff0c;多个函数&#x1f4ca;散点图、极坐标和子图自定义控件&#xff1a;&#x1f4c9;绘图风格&#x1…

【精华】AIGC专栏-Text/Img/Video/audio

&#xff08;一&#xff09;LLM专栏 大模型相关技术原理以及实战经验&#xff1a;liguodongiot/llm-action 1 ColossalAI &#xff08;1&#xff09;参考资料&#xff1a;700 亿参数 LLaMA2 训练加速 195%&#xff0c;基础大模型最佳实践再升级 &#xff08;2&#xff09;开…