最近在使用雅虎金融 yfinance
library 获取美股数据的时候,突然出现报错
YFRateLimitError(‘Too Many Requests. Rate limited. Try after a while.’)
字面意思就是我请求的频率太高了被限制了过一会儿再试试看吧!但是,实际上呢,我也只是第一次请求并且只做了一次请求,难道这个频率也高嘛。事出反常必有妖啊,ok,立马google了一下这个错误。关于这个错误确实不是个例,网上也有很多人遇到过,下图是认可最多的解决方案:
点击链接直达该issue
意思就是说需要升级下libary到最新版本,这个回答被大多数开发者所认同,很多人反馈解决了这个问题。同样地,我也试了下这个解决方案,执行命令
pip install yfinance --upgrade
运行截图如下:
看来我的 package 已经是最新的了,ok,那再次运行代码获取美股数据试试:
start_date = '2005-04-01'
end_date = '2025-04-30'
tickers = ['APP', 'TSLA']
data = yf.download(tickers, start_date, end_date, progress = False)['Close']
data = data.pct_change().dropna()
data = data[tickers]
print(data[tickers])
但是,在运行完之后发现依旧报错,还是之前的错误提示。
因此,排除是因为 package 不是最新的缘故,可能是其他原因。在经过一番研究和摸索之后发现,雅虎金融已经停止对东大提供数据服务,和 package 是不是最新的没有关系。好的,那只有用魔法来对抗魔法了,上VPN!上了VPN之后,通过代理国外IP访问雅虎金融,并且在运行数据获取代码之前,加一段这样的代码:
import os
proxy = 'http://127.0.0.1:7890' # 代理设置,此处修改
os.environ['HTTP_PROXY'] = proxy
os.environ['HTTPS_PROXY'] = proxy
使用代理并设置端口号,一般代理端口号为7890。之后,再运行之前的代码,获取美股数据便成功了。
最后,总结下就是:在东大范围内获取雅虎金融的数据,需要开启VPN使用代理地址,并且设置代理端口号。