python - 错误:Errno 套接字错误] [SSL: CERTIFICATE_VERIFY_FAILED] 证书验证失败 (_ssl.c:727)
问题描述
我有一个小代码,在 python 2.7.17 中,我试图访问 Yahoo! Finance 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 问题线程中所指出的,还有另一种选择。网址是:
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)
推荐阅读
- gupshup - 有没有办法从流程构建器进行 http 调用?
- java - 最大汉明距离
- reactjs - 是否可以从 Messenger Webview 打开相机
- javascript - 将 rawurldecode 捕获到变量 php 中
- html - 如何垂直居中对齐 div 内的多个内联 div?
- python - “在 'InputForm' 中找不到键 'current'。选择是:。” 在 Django 表单中
- java - spring boot和thymeleaf验证失败后如何保留下拉输入值
- visual-studio-code - VSCode 不尊重文件关联
- typescript - 如何将我的 API 函数导入另一个 Typescript 文件?
- postgresql - pg_dump 使 PostgreSQL 服务器崩溃