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

Python使用datetime循环请求接口报KeyError: 'departures'问题求助

问题解决方法
  • 核心错误:循环拼接URL时错误使用了整个dates列表而非循环变量
    你代码中写的是url = "https://X{}".format(dates),但遍历的单日期变量是i,应该改为url = "https://X{}".format(i)。你把整个日期列表拼到了URL中,请求的地址本身就是非法的,返回的JSON大概率是接口报错结构,不存在departures字段,这是触发KeyError的根本原因。
  • 次要错误:date21变量未定义就添加到了dates列表
    你仅计算了date7、date14两个日期,没有定义date21就执行了dates.append(date21),如果实际运行代码未补全该变量定义会先抛出NameError,补全代码如下:
    date21 = date + datetime.timedelta(days=21)
    date21 = date21.strftime("%Y%m%d")
    
  • 稳定性优化建议:请求后增加状态校验和字段存在性判断,避免异常
    可以先判断请求状态码是否正常,再判断返回的JSON中是否存在departures字段再取值,优化后的完整循环代码示例:
    for i in dates :
      url = "https://X{}".format(i)
      url_request = requests.get(url)
      # 先判断请求是否成功
      if url_request.status_code == 200:
          url_request_data = url_request.json()
          # 再判断字段是否存在
          if "departures" in url_request_data:
              print(len(url_request_data["departures"]))
          else:
              print(f"日期{i}的返回数据无departures字段,返回内容:{url_request_data}")
      else:
          print(f"日期{i}请求失败,状态码:{url_request.status_code}")
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 08:57:04