栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

python批量下载数据|工具箱

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

python批量下载数据|工具箱

现在很多数据提供HTTPServer下载服务,在这里介绍一种普遍适用的利用URL批量下载数据的python方法

前言

很多数据支持FTP下载,也提供OPeNDAP方式下载。两者的差异是显而易见的:

(1)FTP下载的数据量很大,因为是全球模式,一个要素如流速东分量可能在1000MB左右的量级,365天累计下来是天量。国内的网速几乎是不可能支持的,另外,存储容量也不允许。
(2)OPeNDAP方式可以指定区域、时间、要素下载,换言之,大家按需索取,针对性要强很多。

Requests库

Requests 是用Python语言编写,基于urllib,采用Apache2 Licensed 开源协议的 HTTP 库。它比 urllib 更加方便,可以节约我们大量的工作,完全满足 HTTP 测试需求。Requests 是一个很实用的Python HTTP客户端库,编写爬虫和测试服务器响应数据时经常会用到。可以说,Requests 完全满足如今网络的需求。

py库安装

pip install requests

导入所需要的包

import requests
单个数据下载
import requests 

url = 'http://thredds.northwestknowledge.net:8080/thredds/fileServer/TERRACLIMATE_ALL/data/TerraClimate_ws_2010.nc' 

filename= url.split("data/")[1]#取url最后一些关键字作为数据命名
print ("正在下载:",filename)

download = requests.get(url,stream=True ) 
with open("自设路径/"+filename, "wb") as code:#"wb" 以二进制写方式打开,只能写文件
     code.write(download.content)
     
     print("结束,",download.status_code)



#out
正在下载:TerraClimate_ws_2010.nc
结束, 200
批量下载

一:时间序列数据

一般时间序列数据的url都有规律可循,即只改变url中的时间,对于这种,我们只要改变url中的时间后循环get即可

import requests 
for yr in range(1990,2021):

 url='h ttp://thredds.northwestknowledge.net:8080/thredds/fileServer/TERRACLIMATE_ALL/data/TerraClimate_ws_'+str(yr)+'.nc' 

filename= url.split("data/")[1]#取url最后一些关键字作为数据命名
print ("正在下载:",filename)

download = requests.get(url,stream=True ) 
with open("自设路径/"+filename, "wb") as code:#"wb" 以二进制写方式打开,只能写文件
     code.write(download.content)
     
     print("结束,",download.status_code)

二:非时间序列

url无规律可循,批量下载时就可以把url先保存在文本里,根据一种循环读取文本中的url后get即可。

问题:用这个方法看不到单个数据的下载进程,如果卡住发现不了,只能判断单个数据下载“结束”

参考:

Python’s Requests Library (Guide) – Real Python

欢迎关注公众号遥感迷,一起学习探究

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/675163.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号