1、单文件爬取

爬取该网站下的crupre.nc数据,如下

使用requests库,然后填写网站的url:"http://clima-dods.ictp.it/regcm4/CLM45/crudata/"

和需要下载的文件名:"crupre.nc"

import requests
import osdef download_file(url, local_filename):os.makedirs(os.path.dirname(local_filename), exist_ok=True)with requests.get(url, stream=True) as r:r.raise_for_status()with open(local_filename, 'wb') as f:for chunk in r.iter_content(chunk_size=8192):f.write(chunk)return local_filenamebase_url = "http://clima-dods.ictp.it/regcm4/CLM45/crudata/"
filename = "crupre.nc"
file_url = base_url + filenamelocal_path = f"./downloads/{filename}"try:print(f"正在下载 {filename}...")download_file(file_url, local_path)print(f"下载完成!文件保存在: {local_path}")
except Exception as e:print(f"下载失败: {e}")

2、多文件爬取

如果要多文件同时爬取,那逐个输文件名很不方便。如下,爬取下列网页里的所有nc数据,

此时可使用下列脚本:

import requests
from bs4 import BeautifulSoup
import osdef get_file_links(url):"""获取页面中的所有NC文件链接"""try:response = requests.get(url)soup = BeautifulSoup(response.text, 'html.parser')# 查找所有链接links = []for link in soup.find_all('a'):href = link.get('href')if href and href.endswith('.nc'):links.append(href)return linksexcept Exception as e:print(f"获取文件列表失败: {e}")return []def download_all_nc_files(base_url, download_dir="./downloads"):"""下载所有NC文件"""os.makedirs(download_dir, exist_ok=True)# 获取文件列表files = get_file_links(base_url)if not files:print("未找到NC文件")returnprint(f"找到 {len(files)} 个NC文件")for file in files:file_url = base_url + filelocal_path = os.path.join(download_dir, file)print(f"正在下载 {file}...")try:with requests.get(file_url, stream=True) as r:r.raise_for_status()with open(local_path, 'wb') as f:for chunk in r.iter_content(chunk_size=8192):f.write(chunk)print(f"✓ {file} 下载完成")except Exception as e:print(f"✗ {file} 下载失败: {e}")base_url = "http://clima-dods.ictp.it/regcm4/CLM45/surface/"
download_all_nc_files(base_url)

跳过某个文件,下载剩余的文件:

import requests
from bs4 import BeautifulSoup
import osdef get_file_links(url):"""获取页面中的所有NC文件链接"""try:response = requests.get(url)soup = BeautifulSoup(response.text, 'html.parser')# 查找所有链接links = []for link in soup.find_all('a'):href = link.get('href')if href and href.endswith('.nc'):links.append(href)return linksexcept Exception as e:print(f"获取文件列表失败: {e}")return []def download_all_nc_files(base_url, download_dir="./downloads"):"""下载所有NC文件"""os.makedirs(download_dir, exist_ok=True)# 获取文件列表files = get_file_links(base_url)if not files:print("未找到NC文件")returnprint(f"找到 {len(files)} 个NC文件")print('文件名如下:')print(files)# 定义要跳过的文件列表skip_files = ['GlobalLandCover.nc', 'mksrf_urban.nc']for file in files:if file in skip_files:print(f"跳过文件: {file}")continuefile_url = base_url + filelocal_path = os.path.join(download_dir, file)print(f"正在下载 {file}...")try:with requests.get(file_url, stream=True) as r:r.raise_for_status()with open(local_path, 'wb') as f:for chunk in r.iter_content(chunk_size=8192):f.write(chunk)print(f"✓ {file} 下载完成")except Exception as e:print(f"✗ {file} 下载失败: {e}")# 使用示例
base_url = "http://clima-dods.ictp.it/regcm4/CLM45/surface/"
download_all_nc_files(base_url)

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

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

策略模式 + 工厂模式

策略模式:简单来说解决的行为的封装与选择。如HandlerMapping,将 HTTP 请求映射到对应的处理器(Controller 或方法)。工厂模式:解决的是具有相同属性的对象创建问题,如BeanFactory创建bean对象。解决的代码…

Diamond基础3:在线逻辑分析仪Reveal的使用

文章目录1. 与ILA的区别2. 使用Reveal步骤3.Reveal注意事项4.传送门1. 与ILA的区别 Reveal是Lattice Diamond集成开发环境用于在线监测信号的工具,ILA是xilinx的Vivado集成开发工具的在线逻辑分析仪,同Reveal一样,均可以在项目运行过程中&am…

超适合程序员做知识整理的 AI 网站

这次要给大家分享一个超适合程序员做知识整理的 AI 网站 ——Notion AI,网址是Notion,它能把你随手记的杂乱笔记、代码片段、技术文档,一键梳理成逻辑清晰的结构化内容,小索奇我用它整理 “Python 爬虫知识点” 时,原本…

【 Selenium 爬虫】2025年8月25日-pixabay 图片采集

无恶意采集,取部分图片用来做相册测试的😄 效果图import cn.hutool.core.io.FileUtil; import cn.hutool.core.util.StrUtil; import cn.hutool.json.JSONUtil; import com.la.selenium.utils.SeleniumUtil; import lombok.extern.slf4j.Slf4j; import o…

服务器托管需要注意什么事项?

服务器托管是企业IT基础设施的关键环节,其稳定性和安全性直接影响业务连续性。需要注意下面这几点! 一、服务商与机房选择 服务商资质 选择持有ISP证书的合法服务商,优先考虑运营超5年、市场口碑佳的老牌公司,技术团队需具备72…

微信小程序备忘

1.按钮事件中想切换到tabBar中的链接用switchTab,不能用navigateTo:agentPage: function() { wx.switchTab({url: /pages/agent/agent}) },特别注意:微信小程序中所谓的自定义,并不是完全的自定义,在app.json中定义&a…

虚拟机NAT模式通过宿主机(Windows)上网不稳定解决办法(无法上网)(将宿主机设置固定ip并配置dns)

文章目录问题描述解决办法分析**1. 问题的根本原因****(1) 宿主机动态IP的DNS配置问题****(2) NAT模式下的网络依赖****(3) 自习室WiFi的潜在限制****2. 用户操作的合理性分析****(1) 固定IP的作用****(2) 手动指定公共DNS的作用****3. 用户怀疑的正确性****4. 其他可能原因的排…

基于 HTML、CSS 和 JavaScript 的智能图像虚化系统

目录 1 前言 2 技术实现 2.1 HTML:搭建页面基础结构 2.2 CSS:打造科技感视觉体验 2.3 JavaScript:实现核心虚化功能 2.3.1 图像上传与初始化 2.3.2 实时虚化处理 2.3.3 图像下载功能 3 完整代码 4 运行结果 5 总结 1 前言 三大核…

PS更改图像尺寸

新建文档 1.左上角——新文件可以新建文档2.文件——新建文档3.快捷键CtrlN 对文件命名 输入新文件名称设置宽度和高度 设置文件的宽高,单位可以是像素、英寸、厘米等。还可以选择文件方向或者是否使用画板模式画布背景色 一般显示白色,也可以选择其他颜…

分词器详解(一)

文章目录🌟 第0层:极简版(30秒理解)核心公式生活比喻📚 第1层:基础概念(5分钟理解)1. 分词器基础1.1 分词器的核心作用1.2 主流分词算法对比2. 基础实现2.1 BPE实现原理2.2 特殊标记…

推荐一个论文阅读工具ivySCI

1.一些关于ivySCI的数据 (摘自:吴焱红,论文示范:ivySCI 在论文管理、阅读和笔记中的体验) 1.科研人员花在文献阅读上的时间占总工作时间的 23%2.每年阅读的文献数量大概是 188 到 280 篇3.ivySCI 提供 Pad(iPad 和 Android) 和桌…

诊断服务器(Diagnostic Server)

在《SWS_Diagnostics.pdf》中,诊断服务器(Diagnostic Server) 是诊断管理(DM)的核心执行单元,聚焦 “软件集群(SoftwareCluster)级诊断资源的独立管控”,实现 UDS(ISO 14229-1)与 SOVD(ASAM 服务化诊断)的全流程诊断功能。以下结合文档 7.3 节 “Diagnostic Serve…

如何开发一款高稳定、低延迟、功能全面的RTSP播放器?

一、引言:RTSP的价值与挑战 RTSP(Real-Time Streaming Protocol)作为实时流媒体传输的核心协议,广泛应用于安防监控、无人机回传、教育互动、远程医疗、单兵指挥等行业。它提供了 基于请求/响应机制的流媒体控制能力,…

数据结构——树(03二叉树,与路径有关的问题,代码练习)

文章目录一、求二叉树的值【层序遍历实现】1.1右视图1.2层最大值1.3层和1.4最底层的叶子结点的和1.5层平均值1.6最大层和的层号二、二叉树的路径2.1根节点到叶子节点,二叉树的路径2.2路径的十进制之和 & 二进制之和2.3二叉树里的路径三、二叉树的路径23.1最长同…

Git配置:禁用全局HTTPS验证

文章目录Git配置:禁用全局HTTPS验证什么是HTTPS验证?为什么需要禁用HTTPS验证?如何禁用全局HTTPS验证?注意事项结论Git配置:禁用全局HTTPS验证 在软件开发和版本控制中,Git是一个不可或缺的工具。它帮助开…

【54页PPT】基于DeepSeek的数据治理技术(附下载方式)

篇幅所限,本文只提供部分资料内容,完整资料请看下面链接 https://download.csdn.net/download/2501_92796370/91778320 资料解读:《基于DeepSeek的数据治理技术》 详细资料请看本解读文章的最后内容。 作为数据治理领域的资深研究者&#…

2025年最新 unityHub游戏引擎开发2d手机游戏和桌面游戏教程

设置开发编辑器 : 以下是一个简化版的移动控制代码,不依赖自定义输入配置,直接使用 Unity 新输入系统的默认绑定,并兼容手机端的 Joystick Pack 虚拟摇杆: SimplePlayerMovement using UnityEngine; using UnityEngi…

SuperMap GIS基础产品FAQ集锦(20250901)

一、SuperMap iDesktopX 问题1:咨询MapGIS数据迁移功能是否支持MapGIS 10版本,在迁移10版本的符号库时卡在0%并报错“升级6x系统库失败”。 11.3.0【问题原因】客户使用问题,mapgis6.7里面工程文件和符号库之前没有绑定关系,mapgi…

react-native-reanimated-carousel的API记录

‌核心属性‌‌data‌类型: Array<any>必填&#xff0c;轮播数据源&#xff0c;支持任意类型数据。‌renderItem‌类型: ({ item, index }) > React.ReactNode必填&#xff0c;自定义卡片渲染函数&#xff0c;参数包含当前项和索引。‌width/height‌类型: number控制…

TypeScript 泛型入门(新手友好、完整详解)

目标读者&#xff1a;刚学 TS 的前端开发者&#xff0c;或希望把泛型用到实际工程&#xff08;请求封装、组件复用&#xff09;中的同学。目录 为什么需要泛型&#xff08;直观动机&#xff09;基本语法与例子&#xff08;函数、接口、类&#xff09;泛型约束&#xff08;exten…