如何使用wget下载NOAA NCEI页面中的所有.gz文件?
批量下载NOAA NCEI水深数据.gz文件的命令行解决方案
问题描述
从NOAA NCEI下载公开水深数据时,官方「请求文件」工具耗时超1周且易无提示失败,需通过wget/curl批量下载目标页面中的所有.gz文件。示例页面包含可直接访问的.gz文件链接,但使用以下wget命令时出现两类错误:
wget --execute="robots = off" -A.gz --mirror --convert-links --no-parent [目标页面URL]
错误信息:
Unable to establish SSL connection.(无法建立SSL连接)HTTP request sent, awaiting response... 301 Moved Permanently(HTTP请求已发送,等待响应... 301永久重定向)
错误原因
- SSL兼容性问题:部分资源链接使用HTTP协议,wget默认的SSL验证逻辑与服务器配置冲突,导致连接失败。
- 重定向处理异常:
--mirror参数会强制镜像站点结构,触发不必要的域名重定向,而原始页面链接可能包含相对路径或旧域名,引发301错误。
解决方案
方法1:提取链接后批量下载(推荐)
先从页面中提取所有.gz文件的完整链接,再批量下载:
# 步骤1:抓取页面并提取所有.gz文件的完整链接 curl -L [目标页面URL] | grep -o 'http[s]\?://data\.ngdc\.noaa\.gov[^"]*\.gz' > gz_files.txt # 步骤2:批量下载所有文件 wget --input-file=gz_files.txt --no-check-certificate
参数说明:
curl -L:自动跟随页面重定向,确保获取最新页面内容grep -o:精准匹配并提取符合格式的.gz文件完整URL--no-check-certificate:跳过SSL证书验证,解决连接失败问题
方法2:优化wget参数直接爬取
调整wget参数,适配NCEI服务器的重定向和SSL配置:
wget --execute="robots=off" -A.gz --no-parent --recursive --level=1 --no-check-certificate --content-disposition [目标页面URL]
参数说明:
--recursive --level=1:仅递归爬取当前页面的链接,避免深入无关目录--content-disposition:正确解析服务器返回的文件名,避免下载后文件名异常- 移除
--mirror和--convert-links:这两个参数会强制镜像站点,容易触发重定向错误
curl替代方案
若偏好使用curl,可执行以下命令:
curl -L [目标页面URL] | grep -o 'http[s]\?://data\.ngdc\.noaa\.gov[^"]*\.gz' | xargs -n 1 curl -O --insecure
参数说明:
xargs -n 1:逐个处理每个提取到的链接-O:保留远程文件的原始文件名--insecure:跳过SSL证书验证
内容的提问来源于stack exchange,提问作者Evan Lahr
相关产品推荐
相关产品推荐

