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

Flask调用Yahoo Finance API部分股票代码返回404错误求助

排查Flask调用Yahoo Finance API返回404(Timestamp data missing)问题

排查思路

  • 验证股票代码有效性
    这类错误大多和代码不匹配Yahoo Finance收录规则有关:

    • 手动在Yahoo Finance官网搜索目标代码(如AMZ、PUB),确认是否存在对应股票、是否仍在交易或有历史数据。部分代码属于非美股市场,需添加后缀(如巴西市场的AMZ.SA);有些代码可能已退市,Yahoo Finance不再提供数据。
    • 注意区分相似代码:比如Amazon的代码是AMZN而非AMZ,输入错误必然返回无数据。
  • 检查API参数合理性
    不同股票的数据覆盖度有差异,冷门股票通常没有高频数据:

    • 避免使用过小的时间范围(如几小时)和高频间隔(如1m),尝试range=1y+interval=1d这类通用参数组合,确认能否返回数据。
    • 打印完整请求URL(如https://query1.finance.yahoo.com/v8/finance/chart/AMZ?range=1y&interval=1d),手动在浏览器访问,对比返回结果是否和代码中一致。
  • 核对请求头与API规则
    Yahoo Finance对请求头有校验要求:

    • 使用贴近真实浏览器的User-Agent(如Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36),避免使用过于简单的自动化头信息。
    • 检查请求参数是否有格式错误,比如symbol参数是否带空格、URL编码是否正确。
  • 捕获完整响应信息
    不要只看表面错误提示,打印完整响应内容:

    • 在Flask代码中添加print(response.text)或print(response.json()),查看API返回的详细错误说明,比如是否明确提示"Symbol not found"或"No data available for this range"。

解决方法示例

如果确认是代码格式问题(需添加市场后缀),修改代码中的股票参数:

# 原代码
symbol = "AMZ"
# 修改为对应市场的完整代码
symbol = "AMZ.SA"

如果是参数组合问题,调整请求参数:

params = {
    "symbol": symbol,
    "range": "1y",  # 扩大时间范围
    "interval": "1d"  # 使用日线数据
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 09:57:29