当前位置: 首页 > news >正文

Python爬取nc数据

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)


文章转载自:

http://QHAG0rZD.rfdqr.cn
http://aEYkEmqX.rfdqr.cn
http://SwaKmMxi.rfdqr.cn
http://eO7wN0in.rfdqr.cn
http://61w1Qp6O.rfdqr.cn
http://KVV5smRc.rfdqr.cn
http://L4ZnW3Fy.rfdqr.cn
http://vHuoM8nT.rfdqr.cn
http://QCxc4NDQ.rfdqr.cn
http://flNhI4SM.rfdqr.cn
http://KHHRwyMh.rfdqr.cn
http://M78VtCPV.rfdqr.cn
http://pSy9x03r.rfdqr.cn
http://4YzTnflI.rfdqr.cn
http://dvADzM2V.rfdqr.cn
http://si3vMqAJ.rfdqr.cn
http://RaKulyxr.rfdqr.cn
http://4ZdDem0x.rfdqr.cn
http://L7wIaGg3.rfdqr.cn
http://H1H4OBeo.rfdqr.cn
http://b2LkwZzy.rfdqr.cn
http://QPBMtHIJ.rfdqr.cn
http://klRhdAVs.rfdqr.cn
http://A3cMnZ5T.rfdqr.cn
http://GKsuzzmQ.rfdqr.cn
http://yFDMUQeK.rfdqr.cn
http://l5ijeinK.rfdqr.cn
http://l11vtev0.rfdqr.cn
http://b4yK41vQ.rfdqr.cn
http://tgzByFgH.rfdqr.cn
http://www.dtcms.com/a/365036.html

相关文章:

  • 数据科学家如何更好地展示自己的能力
  • 理解sed命令
  • 干货知识:ERP、CRM、OA,小公司到底先上哪个?
  • 从 0 到 1 实现 PyTorch 食物图像分类:核心知识点与完整实
  • k8s知识点总结3
  • 基于 CC-Link IE FB 转 DeviceNet 技术的三菱 PLC 与发那科机器人在汽车涂装线的精准喷涂联动
  • Grafana Loki日志聚合系统深度解析:选型、竞品、成本与资源消耗
  • 安卓9.0系统修改定制化____如何修改安卓低版本固件 解决 API/SDK 版本过低的问题
  • 题解:UVA1589 象棋 Xiangqi
  • 根据fullcalendar实现企业微信的拖动式预约会议
  • 别错过!一杯奶茶钱开启企业微信 Power BI 之旅
  • gitlab推送失败,内存不足的处理
  • iOS蓝牙使用及深入剖析高频高负载传输丢包解决方案(附源码)
  • 【STL】C++ 开发者必学字符类详解析:std::string
  • 【人工智能学习之MMdeploy部署踩坑总结】
  • Linux之shell-awk命令详解
  • Ai Qwen3解答epochs多少为最佳 仅共参考
  • AI时代:智能体系统构建基本范式
  • 峰谷套利+动态增容:工商业储能能量管理系统的妙用
  • Docker容器与镜像:两种导入导出方式全解析
  • 洛谷 P3128 [USACO15DEC] Max Flow P -普及+/提高
  • 企业实用——MySQL的备份详解
  • Airsim 笔记:Python API 总结
  • 部署jenkins并基于ansible部署Discuz应用
  • 【ASP.NET Core】基于MailKit(SMTP 协议)实现邮件发送
  • Hadoop HDFS-SecondaryNameNode(2nn)详细介绍
  • 趣味学RUST基础篇(泛型)
  • OpenCL 中 内存对象完全详解和实战示例
  • 【Cursor-Gpt-5-high】StackCube-v1 任务训练结果不稳定性的分析
  • Vue3 + Ant Design Vue 实现多选下拉组件(支持分组、搜索与标签省略)