JupyterLab中yfinance下载股票数据触发YFRateLimitError,Colab可正常运行
解决JupyterLab中yfinance触发YFRateLimitError的问题
问题回顾
相同的yfinance代码在Google Colab可正常运行,但在JupyterLab中执行时触发YFRateLimitError('Too Many Requests. Rate limited. Try after a while.'),已尝试更换股票代码、更新yfinance版本,问题仍存在。
解决方案
排查IP限制
本地JupyterLab使用的固定IP可能被Yahoo Finance列入限制名单(比如该IP曾被其他用户频繁请求),而Colab依赖谷歌动态IP池不受影响。可以切换网络(如手机热点)验证是否为IP问题。自定义请求头模拟浏览器访问
Yahoo Finance会识别非浏览器请求头并限制,手动设置真实浏览器的User-Agent可绕过部分限制:import yfinance as yf # 替换为你当前浏览器的User-Agent(可通过浏览器开发者工具获取) custom_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' } df = yf.download('AAPL', period='1y', headers=custom_headers) df.head()改用Ticker对象的history方法
yfinance的download和Ticker.history底层请求逻辑不同,后者更不容易触发限制:import yfinance as yf ticker = yf.Ticker('AAPL') df = ticker.history(period='1y') df.head()添加请求延迟
在请求前增加短暂延迟,模拟正常用户的访问节奏:import yfinance as yf import time time.sleep(3) # 请求前等待3秒 df = yf.download('AAPL', period='1y') df.head()
补充说明
Google Colab的服务器IP属于谷歌官方IP段,Yahoo Finance对这类IP的限制策略更宽松,这也是Colab能正常运行的核心原因。
内容的提问来源于stack exchange,提问作者Rafael Kronwald Sillas
相关产品推荐
相关产品推荐

