Python 问题解决 | urlopen error [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed

环境和笔记:

macOS 10.12.6
Python3.7.0
pycharm community 2019.1
GitHub:https://github.com/Biosciman

问题代码

from urllib.request import urlopen
import json

json_url = "https://raw.githubusercontent.com/muxuezi/btc/master/btc_close_2017.json"

response = urlopen(json_url)  # 出问题步骤

# 读取数据
req = response.read()
# 将数据写入文件
with open('btc_close_2017_urllib.json', 'wb') as f:
    f.write(req)
# 加载json格式
file_urllib = json.loads(req)
print(file_urllib)

遇到的问题

下载网络上文件时遇到urllib.error.URLError:证书认证失败

urllib.error.URLError: <urlopen error [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:1051)>

ssl.SSLCertVerificationError
urllib.error.URLError

解决方案

方案1:在调用urlopen() 函数时加入context 参数

import ssl
context = ssl._create_unverified_context()
response = urlopen(json_url, context=context)

from urllib.request import urlopen
import ssl  # 解决步骤1
import json

json_url = "https://raw.githubusercontent.com/muxuezi/btc/master/btc_close_2017.json"

context = ssl._create_unverified_context()  # 解决步骤2

response = urlopen(json_url, context=context)  # 解决步骤3

# 读取数据
req = response.read()
# 将数据写入文件
with open('btc_close_2017_urllib.json', 'wb') as f:
    f.write(req)
# 加载json格式
file_urllib = json.loads(req)
print(file_urllib)

方案2:全局取消证书验证

import ssl
ssl._create_default_https_context = ssl._create_unverified_context

from urllib.request import urlopen
import ssl  # 解决步骤1
import json

json_url = "https://raw.githubusercontent.com/muxuezi/btc/master/btc_close_2017.json"

ssl._create_default_https_context = ssl._create_unverified_context  # 解决步骤2
response = urlopen(json_url)

# 读取数据
req = response.read()
# 将数据写入文件
with open('btc_close_2017_urllib.json', 'wb') as f:
    f.write(req)
# 加载json格式
file_urllib = json.loads(req)
print(file_urllib)

参考资料

  1. certificate verify failed 解决方法
  2. certificate verify failed
  3. Python--urlopen error
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容