我有一段小代码,在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()
该网站自2018年起已经停用,很遗憾(更多讨论). 然而,正如链接的Github问题线程中所指出的那样,有一个替代方案。这个URL是。
https://query1.finance.yahoo.com/v7/finance/quote?lang=en-US®ion=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®ion=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)