0

我在 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”,第 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] 证书验证失败:证书链中的自签名证书 (_ssl.c:1076)

在处理上述异常的过程中,又出现了一个异常:

回溯(最后一次调用):文件“c:\users\miniconda3\lib\site-packages\requests\adapters.py”,第 449 行,发送超时=超时文件“c:\users\miniconda3\lib\site -packages\urllib3\connectionpool.py”,第 720 行,在 urlopen 方法中,url,error=e,_pool=self,_stacktrace=sys.exc_info()[2] 文件“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',端口 = 443):最大重试次数超过 url:/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)')))

在处理上述异常的过程中,又出现了一个异常:

Traceback(最近一次调用最后一次):文件“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”,第 182 行,在 _download_one 舍入=舍入,许多=真)文件“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 行,请求返回 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): url: /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)')))))))))send(prep, **send_kwargs) 文件“c:\users\miniconda3\lib\site-packages\requests\sessions.py”,第 643 行,在 send 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',端口 = 443):使用 url 超出最大重试次数:/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)')))send(prep, **send_kwargs) 文件“c:\users\miniconda3\lib\site-packages\requests\sessions.py”,第 643 行,在 send 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',端口 = 443):使用 url 超出最大重试次数:/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)')))在发送 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, '[SSL: CERTIFICATE_VERIFY_FAILED] 证书验证失败:证书链中的自签名证书 (_ssl.c:1076)')))在发送 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, '[SSL: CERTIFICATE_VERIFY_FAILED] 证书验证失败:证书链中的自签名证书 (_ssl.c:1076)')))com',端口 = 443):使用 url 超出最大重试次数:/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)')))com',端口 = 443):使用 url 超出最大重试次数:/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 似乎陷入了某种循环,我必须手动中断它。

有人能帮我一下吗?

非常感谢

4

2 回答 2

0

我相信问题来自外部来源,也许雅虎财经已经倒闭了?我尝试运行你的代码,它对我来说很好。(PyCharm,Python 3.7)

于 2020-08-27T06:48:27.587 回答
0

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

cd /Applications/Python\ 3.9/
./Install\ Certificates.command
于 2020-12-29T09:43:06.510 回答