错误:Errno套接字错误 Errno socket error] [SSL: CERTIFICATE_VERIFY_FAILED] 证书验证失败(_ssl.c:727)

问题描述 投票:0回答:1

我有一段小代码,在python 2.7.17中,我想通过雅虎财经的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()
python api
1个回答
1
投票

该网站自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)
© www.soinside.com 2019 - 2024. All rights reserved.