简体   繁体   English

从 yfinance 调用“下载”后出现 SSL 错误

[英]SSL error after “download” call from yfinance

I installed yfinance in Spyder (Python 3.7) but when I make a basic call, such as:我在 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)

I get an error message:我收到一条错误消息:

Exception in thread Thread-9: Traceback (most recent call last):线程 Thread-9 中的异常:回溯(最近一次调用):
File "c:\\users\\miniconda3\\lib\\site-packages\\urllib3\\connectionpool.py", line 672, in urlopen chunked=chunked, File "c:\\users/miniconda3\\lib\\site-packages\\urllib3\\connectionpool.py", line 376, in _make_request self._validate_conn(conn) File "c:\\users\\miniconda3\\lib\\site-packages\\urllib3\\connectionpool.py", line 994, in validate_conn conn.connect() File "c:\\users\\miniconda3\\lib\\site-packages\\urllib3\\connection.py", line 360, in connect ssl_context=context, File "c:\\users\\miniconda3\\lib\\site-packages\\urllib3\\util\\ssl .py", line 370, in ssl_wrap_socket return context.wrap_socket(sock, server_hostname=server_hostname) File "c:\\users\\miniconda3\\lib\\ssl.py", line 423, in wrap_socket session=session File "c:\\users\\miniconda3\\lib\\ssl.py", line 870, in _create self.do_handshake() File "c:\\users\\miniconda3\\lib\\ssl.py", line 1139, in do_handshake self._sslobj.do_handshake() ssl.SSLCertVerificationError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: self signed certificate in certific文件“c:\\users\\miniconda3\\lib\\site-packages\\urllib3\\connectionpool.py”,第 672 行,urlopen chunked=chunked,文件“c:\\users/miniconda3\\lib\\site-packages\\urllib3\\connectionpool.py” py”,第 376 行,在 _make_request 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” ,第 370 行,在 ssl_wrap_socket 中返回 context.wrap_socket(sock, server_hostname=server_hostname) 文件“c:\\users\\miniconda3\\lib\\ssl.py”,第 423 行,在 wrap_socket session=session 文件“c:\\users\\miniconda3\\ lib\\ssl.py”,第 870 行,在 _create self.do_handshake() 文件“c:\\users\\miniconda3\\lib\\ssl.py”,第 1139 行,在 do_handshake self._sslobj.do_handshake() ssl.SSLCertVerificationError: [ SSL:CERTIFICATE_VERIFY_FAILED] 证书验证失败:证书中的自签名证书ate chain (_ssl.c:1076)吃了链 (_ssl.c:1076)

During handling of the above exception, another exception occurred:在处理上述异常的过程中,又发生了一个异常:

Traceback (most recent call last): File "c:\\users\\miniconda3\\lib\\site-packages\\requests\\adapters.py", line 449, in send timeout=timeout File "c:\\users\\miniconda3\\lib\\site-packages\\urllib3\\connectionpool.py", line 720, in urlopen method, url, error=e, _pool=self, _stacktrace=sys.exc_info()[2] File "c:\\users\\miniconda3\\lib\\site-packages\\urllib3\\util\\retry.py", line 436, in increment raise MaxRetryError(_pool, url, error or ResponseError(cause)) urllib3.exceptions.MaxRetryError: HTTPSConnectionPool(host='query1.finance.yahoo.com', port=443): Max retries exceeded with url: /v8/finance/chart/AAPL?period1=946681200&period2=1293750000&interval=1d&includePrePost=False&events=div%2Csplits (Caused by SSLError(SSLCertVerificationError(1, '[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: self signed certificate in certificate chain (_ssl.c:1076)')))回溯(最近一次调用):文件“c:\\users\\miniconda3\\lib\\site-packages\\requests\\adapters.py”,第 449 行,发送超时=超时文件“c:\\users\\miniconda3\\lib\\site -packages\\urllib3\\connectionpool.py", line 720, in urlopen method, url, error=e, _pool=self, _stacktrace=sys.exc_info()[2] File "c:\\users\\miniconda3\\lib\\site- packages\\urllib3\\util\\retry.py”,第 436 行,递增引发 MaxRetryError(_pool, url, error or ResponseError(cause)) urllib3.exceptions.MaxRetryError: HTTPSConnectionPool(host='query1.finance.yahoo.com', port=443): 最大重试次数超过 url: /v8/finance/chart/AAPL?period1=946681200&period2=1293750000&interval=1d&includePrePost=False&events=div%2Csplits(由 SSLError(SSLCertVerificationError:1, CERTIFICATE_FSSL失败:证书链中的自签名证书 (_ssl.c:1076)')))

During handling of the above exception, another exception occurred:在处理上述异常的过程中,又发生了一个异常:

Traceback (most recent call last): File "c:\\users\\miniconda3\\lib\\threading.py", line 926, in _bootstrap_inner self.run() File "c:\\users\\miniconda3\\lib\\threading.py", line 870, in run self._target(*self._args, **self. kwargs) File "c:\\users\\miniconda3\\lib\\site-packages\\multitasking_ init .py", line 102, in _run_via_pool return callee(*args, **kwargs) File "c:\\users\\miniconda3\\lib\\site-packages\\yfinance\\multi.py", line 167, in _download_one_threaded actions, period, interval, prepost, proxy, rounding) File "c:\\users\\miniconda3\\lib\\site-packages\\yfinance\\multi.py", line 182, in _download_one rounding=rounding, many=True) File "c:\\users\\miniconda3\\lib\\site-packages\\yfinance\\base.py", line 150, in history data = _requests.get(url=url, params=params, proxies=proxy) File "c:\\users\\miniconda3\\lib\\site-packages\\requests\\api.py", line 76, in get return request('get', url, params=params, **kwargs) File "c:\\users\\miniconda3\\lib\\site-packages\\requests\\api.py", line 61, in request return session.req回溯(最近一次调用):文件“c:\\users\\miniconda3\\lib\\threading.py”,第 926 行,在 _bootstrap_inner self.run() 文件“c:\\users\\miniconda3\\lib\\threading.py”中,线870,在运行self._target(* self._args,**自kwargs)文件“C:\\用户\\ miniconda3 \\ LIB \\站点包\\ multitasking_初始化的.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”,第 182 行,在 _download_one rounding=rounding, many=True)文件“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 return request('get', url, params=params, **kwargs) File "c:\\users\\miniconda3\\lib\\site-packages\\requests\\api.py", line 61, in request return session.req uest(method=method, url=url, **kwargs) File "c:\\users\\miniconda3\\lib\\site-packages\\requests\\sessions.py", line 530, in request resp = self.send(prep, **send_kwargs) File "c:\\users\\miniconda3\\lib\\site-packages\\requests\\sessions.py", line 643, in send r = adapter.send(request, **kwargs) File "c:\\users\\miniconda3\\lib\\site-packages\\requests\\adapters.py", line 514, in send raise SSLError(e, request=request) requests.exceptions.SSLError: HTTPSConnectionPool(host='query1.finance.yahoo.com', port=443): Max retries exceeded with url: /v8/finance/chart/AAPL?period1=946681200&period2=1293750000&interval=1d&includePrePost=False&events=div%2Csplits (Caused by SSLError(SSLCertVerificationError(1, '[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: self signed certificate in certificate chain (_ssl.c:1076)'))) uest(method=method, url=url, **kwargs) 文件 "c:\\users\\miniconda3\\lib\\site-packages\\requests\\sessions.py", line 530, in request 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): 最大重试次数超过 url: /v8/finance/chart/AAPL?period1=946681200&period2=1293750000&interval=1d&includePrePost=False&events=div%2Csplits (由 SSLError 引起 (SSLCertVerificationError(1, '[SSLCertificate_FAIVERLED]证书链中的自签名证书 (_ssl.c:1076)')))

Moreover, Spyder seems to get stuck in some sort of loop and I have to manually interrupt it.此外,Spyder 似乎陷入某种循环,我必须手动中断它。

Can anyone help me here?有人能帮我一下吗?

Many thanks非常感谢

I believe the problem comes from an external source, maybe Yahoo Finance was down?我相信问题来自外部来源,也许雅虎财经宕机了? I tried running your code and it works fine for me.我试过运行你的代码,它对我来说很好。 (PyCharm, Python 3.7) (PyCharm,Python 3.7)

On MacOS Big Sur, You need to install the certificate in Python 3.9.在 MacOS Big Sur 上,您需要在 Python 3.9 中安装证书。

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM