使用yfinance/yahooquery获取美股数据遇多类错误求助
问题描述
尝试用yfinance下载AAPL股票数据,执行代码:
!pip install yfinance import yfinance as yf yf.download('AAPL', start='2015-01-01', end=pd.to_datetime('today'), progress=False)
返回错误:
1 Failed download:
AAPL: TypeError("import_optional_dependency() got an unexpected keyword argument 'errors'")
打印数据得到空数组。
使用Ticker类:
print(yf.Ticker('AAPL').info)
返回:
Exception: yfinance failed to decrypt Yahoo data response
尝试yahooquery:
!pip install yahooquery from yahooquery import Ticker t = Ticker('AAPL', asynchronous=True) print(t.history(period='ytd', interval='1d')) print(t.asset_profile)
返回:
Empty DataFrame
Columns: [high, low, volume, open, close]
Index: []
{'APPL': 'No fundamentals data found for any of the
summaryTypes=assetProfile'}
同时pandas datareader也无法正常工作,怀疑依赖yfinance导致。
解决方案
1. 修复yfinance版本兼容问题
第一个错误是yfinance与pandas版本不兼容导致的,执行以下操作:
- 卸载当前yfinance:
pip uninstall -y yfinance - 安装兼容版本(如0.2.31,适配多数pandas环境):
pip install yfinance==0.2.31 - 重新运行代码时先导入pandas:
import pandas as pd import yfinance as yf data = yf.download('AAPL', start='2015-01-01', end=pd.to_datetime('today'), progress=False) print(data.head())
2. 解决yfinance解密失败问题
Yahoo近期调整了数据加密规则,若仍出现解密错误,可手动指定请求头:
import yfinance as yf import requests session = requests.Session() session.headers['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' ticker = yf.Ticker('AAPL', session=session) print(ticker.info)
3. 修复yahooquery的错误
返回结果里的APPL是拼写错误(应为AAPL),修正代码:
from yahooquery import Ticker t = Ticker('AAPL', asynchronous=True) # 获取历史数据 print(t.history(period='ytd', interval='1d')) # 获取资产信息 print(t.asset_profile['AAPL'])
若仍返回空DataFrame,关闭异步模式尝试:
t = Ticker('AAPL', asynchronous=False) print(t.history(period='ytd', interval='1d'))
4. 处理pandas datareader问题
pandas datareader依赖yfinance作为Yahoo数据源后端,解决yfinance问题后即可正常使用:
import pandas_datareader.data as web import pandas as pd data = web.DataReader('AAPL', 'yahoo', start='2015-01-01', end=pd.to_datetime('today')) print(data.head())
内容的提问来源于stack exchange,提问作者eth
相关产品推荐
相关产品推荐

