从yfinance

问题描述

我在Spyder(Python 3.7)中安装了yfinance,但是当我进行基本调用时,例如:

import yfinance as yf


df_yahoo = yf.download('AAPL',start='2000-01-01',end='2010-12-31',progress=False)

print(df_yahoo)

我收到一条错误消息:

线程Thread-9中的异常:追溯(最近一次调用为最后一次):
文件 “ c:\ users \ miniconda3 \ lib \ site-packages \ urllib3 \ connectionpool.py”, 第672行,在urlopen中 chunked = chunked,文件“ c:\ users / miniconda3 \ lib \ site-packages \ urllib3 \ connectionpool.py”, _make_request中的第376行 self._validate_conn(conn)文件“ c:\ users \ miniconda3 \ lib \ site-packages \ urllib3 \ connectionpool.py”, 第994行,在 validate_conn中 conn.connect()文件“ c:\ users \ miniconda3 \ lib \ site-packages \ urllib3 \ connection.py”, 360行,在连接中 ssl_context = context,文件“ c:\ users \ miniconda3 \ lib \ site-packages \ urllib3 \ util \ ssl .py”, ssl_wrap_socket中的第370行 返回context.wrap_socket(sock,server_hostname = server_hostname)文件“ c:\ users \ miniconda3 \ lib \ ssl.py”,第423行,在 wrap_socket session =会话文件“ c:\ users \ miniconda3 \ lib \ ssl.py”,行870,在_create中 self.do_handshake()do_handshake中的文件“ c:\ users \ miniconda3 \ lib \ ssl.py”,行1139 self._sslobj.do_handshake()ssl.SSLCertVerificationError:[SSL:CERTIFICATE_VERIFY_Failed]证书验证失败:自签名 证书链中的证书(_ssl.c:1076)

在处理上述异常期间,发生了另一个异常:

回溯(最近通话最近):文件 “ c:\ users \ miniconda3 \ lib \ site-packages \ requests \ adapters.py”, 发送中的第449行 timeout =超时文件“ c:\ users \ miniconda3 \ lib \ site-packages \ urllib3 \ connectionpool.py”, 第720行,在urlopen中 方法,URL,错误= e,_pool =自我,_stacktrace = sys.exc_info()[2]文件 “ c:\ users \ miniconda3 \ lib \ site-packages \ urllib3 \ util \ retry.py”, 第436行,递增 引发MaxRetryError(_pool,url,error或ResponseError(cause))urllib3.exceptions.MaxRetryError: HTTPSConnectionPool(host ='query1.finance.yahoo.com',port = 443):最大值 网址重试次数超过: / v8 / finance / chart / AAPL?period1 = 946681200&period2 = 1293750000&interval = 1d&includePrePost = False&events = div%2Csplits (由SSLError(SSLCertVerificationError(1,'[SSL: CERTIFICATE_VERIFY_Failed]证书验证失败:自签名 证书链中的证书(_ssl.c:1076)')))

在处理上述异常期间,发生了另一个异常:

回溯(最近通话最近):文件 “ c:\ users \ miniconda3 \ lib \ threading.py”,行926,在 _bootstrap_inner self.run()运行中的文件“ c:\ users \ miniconda3 \ lib \ threading.py”,第870行 self._target(* self._args,** self。 kwargs文件“ c:\ users \ miniconda3 \ lib \ site-packages \ multitasking_ init .py”, 第102行,位于_run_via_pool中 返回被调用者(* args,** kwargs文件“ c:\ users \ miniconda3 \ lib \ site-packages \ yfinance \ multi.py”, 第167行,在_download_one_threaded中 操作,期限,间隔,预发布,代理,舍入)文件“ c:\ users \ miniconda3 \ lib \ site-packages \ yfinance \ multi.py”, _download_one中的第182行 四舍五入=四舍五入,许多=正确)文件“ c:\ users \ miniconda3 \ lib \ site-packages \ yfinance \ base.py”, 历史上的第150行 数据= _requests.get(URL = url,params = params,proxies = proxy)文件“ c:\ users \ miniconda3 \ lib \ site-packages \ requests \ api.py”, 第76行,进入 返回请求(“ get”,url,params = params,** kwargs文件“ c:\ users \ miniconda3 \ lib \ site-packages \ requests \ api.py”, 第61行,应要求 return session.request(method = method,url = url,** kwargs文件“ c:\ users \ miniconda3 \ lib \ site-packages \ requests \ sessions.py”, 线530,在请求中 resp = self.send(prep,** send_kwargs文件“ c:\ users \ miniconda3 \ lib \ site-packages \ requests \ sessions.py”, 发送中的第643行 r = adapter.send(request,** kwargs文件“ c:\ users \ miniconda3 \ lib \ site-packages \ requests \ adapters.py”, 发送中的第514行 引发SSLError(e,request = request)requests.exceptions.SSLError:HTTPSConnectionPool(host ='query1.finance.yahoo.com',port = 443):最大值 网址重试次数超过: / v8 / finance / chart / AAPL?period1 = 946681200&period2 = 1293750000&interval = 1d&includePrePost = False&events = div%2Csplits (由SSLError(SSLCertVerificationError(1,'[[SSL: CERTIFICATE_VERIFY_Failed]证书验证失败:自签名 证书链中的证书(_ssl.c:1076)')))

此外,Spyder似乎陷入了某种循环,我必须手动中断它。

有人可以在这里帮助我吗?

非常感谢

解决方法

我认为问题来自外部来源,也许Yahoo Finance倒闭了?我尝试运行您的代码,它对我来说很好。 (PyCharm,Python 3.7)

,

在 MacOS Big Sur 上,您需要在 Python 3.9 中安装证书。

cd /Applications/Python\ 3.9/
./Install\ Certificates.command