Python+IDM批量下载CMORPH数据

CMORPH(Climate Prediction Center MORPHing technique)是由美国国家海洋和大气管理局(NOAA)的气候预测中心开发的一种降水估算技术。它基于卫星资料,通过将不同卫星上的降水估算数据进行整合和插值,生成高分辨率的全球降水估算数据集。
下载地址
数据主要有几下几个分辨率:

  1. 30min:8km
  2. daily:0.25deg
  3. 1hourly:0.25deg

使用IDM托管下载

批量下载借助IDM更方便管理,下载也更高效。(自行下载安装IDM)

代码模块

import os
import calendar
import requests
from bs4 import BeautifulSoup
import concurrent.futures
import urllib3
import numpy as np
from subprocess import call
## 以下内容为添加本机代理
os.environ["HTTP_PROXY"] = "http://127.0.0.1:7897" 
os.environ["HTTPS_PROXY"] = "http://127.0.0.1:7897"
## 对应自己需要下载的时间尺度,进行修改
url = 'https://www.ncei.noaa.gov/data/cmorph-high-resolution-global-precipitation-estimates/access/30min/8km/'
## 数据保存路径
path = 'F:/cmorph/'
## 下载的数据的起始、截止年份
start_year = 1999
end_year = 1999

def idmDownloader(task_url, folder_path, file_name):
    """
    IDM下载器
    :param task_url: 下载任务地址
    :param folder_path: 存放文件夹
    :param file_name: 文件名
    :return:
    """
    # IDM安装目录
    # idm_engine = "C:\\Program Files (x86)\\Internet Download Manager\\IDMan.exe"
    idm_engine = R"C:\Program Files (x86)\Internet Download Manager\IDMan.exe"
    # 将任务添加至队列
    call([idm_engine, '/d', task_url, '/p', folder_path, '/f', file_name, '/a'])
    # 开始任务队列
    call([idm_engine, '/s'])
urllib3.disable_warnings()

for year in range(start_year,end_year+1):
    for month in range(1,13):
        for day in range(1, calendar.monthrange(year, month)[1]+1):
            ## 数据存储路径
            savePath = path + str(year) +'/' + f"{month:02d}/" +f"{day:02d}/"
            if not os.path.exists(savePath):
                os.makedirs(savePath)

            download_url = url + str(year) +'/' + f"{month:02d}/" +f"{day:02d}/"
            print(download_url)
            response = requests.get(download_url)
            soup = BeautifulSoup(response.text, 'html.parser')
            
                
            for link in soup.select('a[href$=".nc"]'):
                name = link['href']   
                url_i = download_url+name
                idmDownloader(url_i, savePath, name)  # 添加进IDM中下载
                print('data of {} is OK!'.format(name))
                

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐