Ошибка SSL после вызова "загрузки" из yfinance
Я установил yfinance в Spyder (Python 3.7), но когда я делаю базовый вызов, например:
import yfinance as yf
df_yahoo = yf.download('AAPL',
start='2000-01-01',
end='2010-12-31',
progress=False)
print(df_yahoo)
Я получаю сообщение об ошибке:
Исключение в потоке Thread-9: Traceback (последний вызов последним):
файл "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, File "c:\users\miniconda3\ библиотека \ сайт-пакеты \ urllib3 \ утилита \ ssl.py ", строка 370, в ssl_wrap_socket return context.wrap_socket(sock, server_hostname=server_hostname) Файл" c: \ users \ miniconda3 \ lib \ ssl.py ", строка 423, в wrap_socket session=session File "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, в send timeout=timeout File "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 или ResponseError(причина)) urllib3.exceptions.MaxRetryError: HTTPSConnectionPool(host='query1.finance.yahoo.com', port=443): превышено максимальное количество повторных попыток с url: /v8/financial /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 return callee(*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, в истории data = _requests.get(url=url, params=params, proxies=proxy) Файл"c:\users\miniconda3\lib\site-packages\requests\api.py", строка 76, в запросе возврата получения ('get', url, params=params, **kwargs) File "c:\users\miniconda3\lib\site-packages\requests\api.py", строка 61, в запросе return session.request(method=method, url=url, **kwargs) File "c:\users\miniconda3\lib\site-packages\requests\sessions.py", строка 530, в запросе resp = self.send(prepare, **send_kwargs) File "c:\users\miniconda3\lib\site-packages\request \ sessions.py ", строка 643, в send r = adapter.send(request, **kwargs) Файл" c: \ users \ miniconda3 \ lib \ site-packages \ requests \ adapters.py ", строка 514, in отправить запрос 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] проверка сертификата не удалась: самоподписанный сертификат в цепочке сертификатов (_76)'): 1076ssl.c)))))))send (Prep, ** send_kwargs) Файл "c: \ users \ miniconda3 \ lib \ site-packages \ requests \ sessions.py", строка 643, в send r = adapter.send(request, **kwargs) File "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 (вызвано ошибкой SSLEVERIF (SSLCertVerificationError (1,' [SSL_ICATE_ ] проверка сертификата не удалась: самоподписанный сертификат в цепочке сертификатов (_ssl.c:1076)')))send (Prep, ** send_kwargs) Файл "c: \ users \ miniconda3 \ lib \ site-packages \ requests \ sessions.py", строка 643, в send r = adapter.send(request, **kwargs) File "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 (вызвано SSLEVERIFIL (SSLCertVerificationError (1,' [SSL_ICATE_ ] проверка сертификата не удалась: самоподписанный сертификат в цепочке сертификатов (_ssl.c:1076)')))в send r = adapter.send(request, **kwargs) Файл "c:\users\miniconda3\lib\site-packages\requests\adapters.py", строка 514, при отправке поднять SSLError (e, request = request) request.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 r = adapter.send(request, **kwargs) Файл "c:\users\miniconda3\lib\site-packages\requests\adapters.py", строка 514, при отправке поднять SSLError (e, request = request) request.exceptions.SSLError: HTTPSConnectionPool (host = 'query1.finance.yahoo.com', port = 443): Превышено максимальное количество повторных попыток с URL: / v8 / financial /chart/AAPL?period1=946681200&period2=1293750000&interval=1d&includePrePost=False&events=div%2Csplits (вызвано SSLError(SSLCertVerificationError(1, '[SSL:CERTIFICATE_VERIFY_FAILED] проверка сертификата не удалась: самоподписанный сертификат в цепочке сертификатов (_ssl.c:1076)')))com ', port = 443): превышено максимальное количество повторных попыток с url: /v8/financial /chart/AAPL?period1=946681200&period2=1293750000&interval=1d&includePrePost=False&events=div%2Csplits (вызвано SSLEVERIFIL (SSLCertVerificationError (1,' [SSL: CATE_ ] проверка сертификата не удалась: самоподписанный сертификат в цепочке сертификатов (_ssl.c:1076)')))com ', port = 443): превышено максимальное количество повторных попыток с url: /v8/financial /chart/AAPL?period1=946681200&period2=1293750000&interval=1d&includePrePost=False&events=div%2Csplits (вызвано SSLEVERIFIL (SSLCertVerificationError (1,' [SSL: CATE_ ] проверка сертификата не удалась: самоподписанный сертификат в цепочке сертификатов (_ssl.c:1076)')))
Более того, Spyder, кажется, застрял в каком-то цикле, и мне приходится вручную его прерывать.
Кто-нибудь может мне здесь помочь?
Большое спасибо
2 ответа
Я считаю, что проблема возникла из внешнего источника, может быть, Yahoo Finance не работает? Я пробовал запустить ваш код, и он мне подходит. (PyCharm, Python 3.7)
В MacOS Big Sur вам необходимо установить сертификат в Python 3.9.
cd /Applications/Python\ 3.9/
./Install\ Certificates.command