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

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

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值