You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Python从指定气象网站下载CSV数据文件?

解决加拿大气候数据网站CSV文件自动下载问题

你的方向是对的,但这类网站的下载按钮通常不会直接暴露CSV文件的静态链接,而是通过动态生成的API请求或表单提交返回文件,所以直接用BeautifulSoup遍历DOM找不到CSV地址是正常情况。以下是具体的解决思路:

  • 用浏览器抓包分析真实请求:打开目标网页后按F12进入开发者工具,切换到「Network」标签,点击"download data"按钮,观察新增的网络请求。重点关注类型为text/csv或返回文件的请求,它的Request URL就是获取CSV的真实地址,同时留意请求方法(GET/POST)和携带的参数(比如StationID、时间范围、数据时间粒度等)。
  • 提取并构造请求参数:从原页面URL或DOM元素中提取关键参数(比如你的页面里StationID是51459,时间范围、timeframe表示小时/日/月数据),结合抓包得到的请求格式,构造完整的下载链接。
  • 用Python发送请求并保存文件:借助requests库发送构造好的请求,注意带上模拟浏览器的请求头避免被拦截,最后将响应内容写入本地CSV文件。

示例代码

import requests

# 根据抓包结果构造的下载链接(参数可按需调整)
download_url = "https://climate.weather.gc.ca/climate_data/bulk_data_e.html?format=csv&stationID=51459&Year=2020&Month=5&Day=22&timeframe=1&submit=Download+Data"

# 模拟浏览器请求头
headers = {
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36"
}

# 发送请求获取文件内容
response = requests.get(download_url, headers=headers)

# 保存到本地CSV文件
with open("toronto_hourly_climate_20200522.csv", "wb") as file:
    file.write(response.content)

内容的提问来源于stack exchange,提问作者jjk

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.21 13:35:13