You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多
文档控制台
免费开始使用

使用Requests调用Visual Crossing API获取历史天气数据时出现404错误的问题求助

排查VisualCrossing天气API 404错误的解决方案

嘿,我来帮你搞定这个404错误的问题!首先,404通常意味着请求路径不对,但也可能藏着其他细节问题,咱们一步步来排查:

1. 先确认API密钥的有效性

你代码里用的AXSSS应该是示例密钥吧?首先要确保替换成自己从官网获取的真实有效密钥。有些API服务会用404来隐藏密钥无效的问题(而非更直观的401),这是很常见的坑。

2. 检查URL的拼写和格式细节

虽然你的URL看起来大致正确,但有几个小细节要核对:

  • 地点参数London,UK里的逗号,理论上requests会自动处理编码,但如果担心的话,可以换成London%2CUK试试(手动编码逗号)。
  • 日期格式2021-01-01/2021-03-28是符合要求的,但要确认这个日期范围在服务允许的历史数据范围内(比如免费版可能限制只能获取最近3年的历史数据,超出范围也可能返回错误)。
  • 端点路径拼写:官方的Timeline API端点确实是https://weather.visualcrossing.com/VisualCrossingWebServices/rest/services/timeline/,这部分你没写错。

3. 修正后的代码示例(带错误处理)

我给你调整了代码,加上了错误捕获和详细信息打印,方便你定位问题:

import requests

# 务必替换成你自己的真实API密钥
API_KEY = "你的真实API密钥"
location = "London,UK"
start_date = "2021-01-01"
end_date = "2021-03-28"

# 构造请求URL
url = f"https://weather.visualcrossing.com/VisualCrossingWebServices/rest/services/timeline/{location}/{start_date}/{end_date}?key={API_KEY}"

try:
    response = requests.get(url)
    # 主动触发HTTP错误提示
    response.raise_for_status()
    # 解析返回的JSON数据
    weather_data = response.json()
    
    print("数据获取成功!")
    # 打印第一天的温度示例
    print(f"伦敦在{start_date}的平均温度:{weather_data['days'][0]['temp']}°C")
except requests.exceptions.HTTPError as err:
    print(f"HTTP错误:{err}")
    # 打印服务返回的详细错误信息,这是排查关键
    print("服务返回的具体提示:", response.text)
except Exception as e:
    print(f"其他错误:{e}")

4. 额外排查技巧

  • 直接把拼接好的URL(替换真实密钥)复制到浏览器里访问,看返回的具体错误内容——比如会明确告诉你是密钥无效、地点不存在还是日期范围超限。
  • 检查你的API密钥是否已经激活,以及是否达到了调用次数限制(免费版有请求次数上限,超限也可能返回错误)。
  • 确认你的网络环境,有没有代理或防火墙阻挡了对该API域名的请求。

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

火山引擎 最新活动