Jupyter中Ticker.info报错但Google Colab正常的问题求助
解决思路与方案
1. 修正请求头(User-Agent)
Yahoo Finance的接口可能会根据请求的UA做访问限制,本地Jupyter环境的UA可能被判定为非合法客户端,而Colab的UA能正常通过。可以手动替换yfinance会话的请求头:
import yfinance as yf # 更新会话请求头,使用常见浏览器UA session = yf.utils.get_session() session.headers.update({ "User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/119.0.0.0 Safari/537.36" }) # 重新初始化Ticker ticker = yf.Ticker("AAPL") print(ticker.info)
2. 排查本地网络/代理配置
部分网络环境(如公司内网、特定地区网络)可能仅拦截quoteSummary接口请求,不影响价格数据的download接口。可以尝试:
- 切换到手机热点或其他网络环境测试
- 检查本地代理设置,确保未拦截
query2.finance.yahoo.com域名 - 临时关闭防火墙或安全软件,排除拦截可能
3. 清除yfinance缓存
yfinance会缓存请求数据,旧缓存可能导致接口异常。可以:
- 删除本地缓存目录(通常为
~/.cache/yfinance) - 初始化Ticker时直接禁用缓存:
ticker = yf.Ticker("AAPL", cache_dir=None)
4. 修复URL编码问题
报错URL中出现了&(HTML转义字符),可能是本地环境URL编码逻辑异常导致请求路径错误。可以手动构造请求验证:
import requests url = "https://query2.finance.yahoo.com/v6/finance/quoteSummary/AAPL?modules=financialData&modules=quoteType&modules=defaultKeyStatistics&modules=assetProfile&modules=summaryDetail&ssl=true" headers = {"User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/119.0.0.0 Safari/537.36"} response = requests.get(url, headers=headers) print(response.json())
如果手动请求能返回数据,说明是yfinance内部URL拼接逻辑在本地环境出现转义错误,可以尝试升级到yfinance最新版本,或临时修改源码中的URL拼接部分,避免HTML转义。
内容的提问来源于stack exchange,提问作者insomniac
相关产品推荐
相关产品推荐

