Ошибка: Errno ошибка сокета] [SSL: CERTIFICATE_VERIFY_FAILED] не удалось проверить сертификат (_ssl. c: 727) - PullRequest
1 голос
/ 09 мая 2020

У меня есть небольшой код в python 2.7.17, где я пытаюсь подключиться к Yahoo! Финансовый API для получения информации об акции, но когда я выполняю его, я получаю сообщение об ошибке. Не знаю, как это исправить.

Это код:

 import urllib

urlStock = 'http://finance.yahoo.com/d/quotes.csv?s=aapl&f=nagh' 
response = urllib.urlopen(urlStock).read()
print response

А это ошибка:

   Exception has occurred: IOError
[Errno socket error] [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:727)
  File "/Users/ivanparra/Dropbox/Aprendizaje Python/InternetTests.py", line 4, in <module>
    response = urllib.urlopen(urlStock).read()

1 Ответ

1 голос
/ 09 мая 2020

К сожалению, этот сайт был прекращен с 2018 года ( подробнее здесь ). Однако есть альтернатива, как указано в связанной ветке проблемы Github. URL-адрес:

https://query1.finance.yahoo.com/v7/finance/quote?lang=en-US&region=US&corsDomain=finance.yahoo.com&symbols=AAPL&fields=regularMarketPrice

Лично я предпочитаю использовать библиотеку requests (которую вы можете легко установить с помощью pip), когда это возможно, из-за ее простого синтаксиса. Если у вас есть проблемы с SSL, см. Мой комментарий в примере кода.

Вот как бы я его запросил:

import requests
import pdb

res = requests.get("https://query1.finance.yahoo.com/v7/finance/quote?lang=en-US&region=US&corsDomain=finance.yahoo.com&symbols=AAPL&fields=regularMarketPrice")
# If you need to work around SSL issues, set the verify kw arg to False. For example:
# requests.get("URL_HERE", verify=False)

stock_data = res.json()
price = stock_data['quoteResponse']['result'][0]['regularMarketPrice']
print(price)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...