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

如何将Yahoo Finance API的R语言修复补丁转换为Python?

Yahoo Finance V7 API Invalid Crumb 错误修复(Python实现)

问题场景

近期Yahoo Finance对其V7 API进行更新,要求所有请求必须携带Cookie。运行以下Python代码时会触发Invalid Crumb未授权错误:

原错误代码

import requests

url = 'https://query2.finance.yahoo.com/v7/finance/quote?symbols=TSLA&fields=regularMarketPreviousClose&region=US&lang=en-US'
headers = {
    'User-Agent': 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/108.0.0.0 Safari/537.36'
}
data = requests.get(url, headers=headers)
prepost_data = data.json()

错误返回信息

{"finance":{"result":null,"error":{"code":"Unauthorized","description":"Invalid Crumb"}}}

修复思路(从R方案转换)

核心逻辑是先访问Yahoo Finance的主页,获取会话Cookie和验证用的crumb值,再将这两个参数带入API请求中。

Python修复代码

import requests
import re

def get_yahoo_finance_data(symbol):
    # 初始化会话,自动维持Cookie
    session = requests.Session()
    headers = {
        'User-Agent': 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/108.0.0.0 Safari/537.36'
    }
    session.headers.update(headers)
    
    # 访问主页提取crumb值
    response = session.get(f'https://finance.yahoo.com/quote/{symbol}')
    crumb_match = re.search(r'"CrumbStore":{"crumb":"([^"]+)"', response.text)
    if not crumb_match:
        raise ValueError("无法获取验证所需的crumb值")
    crumb = crumb_match.group(1)
    
    # 构造带crumb参数的API请求
    api_url = (
        f'https://query2.finance.yahoo.com/v7/finance/quote?'
        f'symbols={symbol}&fields=regularMarketPreviousClose&region=US&lang=en-US&crumb={crumb}'
    )
    data_response = session.get(api_url)
    return data_response.json()

# 调用示例
if __name__ == '__main__':
    tsla_data = get_yahoo_finance_data('TSLA')
    print(tsla_data)

代码说明

  • 用requests.Session()维持会话,自动保存并携带服务器返回的Cookie
  • 通过正则表达式从主页HTML中提取验证必需的crumb值
  • API请求URL末尾追加crumb参数,配合会话Cookie完成身份验证

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 14:02:55