【问题标题】:How to fix a SSL Certificate error with urllib?如何使用 urllib 修复 SSL 证书错误?
【发布时间】:2019-04-20 20:17:58
【问题描述】:
我正在开发一个 python 程序来从网站上抓取所有图像并将它们下载到一个文件夹中,同时创建一个 csv 文件来存储所有这些信息。我正在使用 urllib 并继续收到有关 ssl 证书失败的错误。我在 Jupyter notebook、Windows 10 和 Python 3.7 上运行。
我尝试 pip 安装 certifi 和 urllib,但这些已经很满意了。我已经尝试重新启动 Jupyter,但这并不能解决问题。我不确定从哪里开始解决这个问题,因为我对 urllib 不是很熟悉。
我希望这会下载图像并输出到 csv 文件,它确实会输出到 csv 文件,但是当我收到此错误时图像不会下载:
错误不会停止程序,但会抑制程序的预期功能。
【问题讨论】:
标签:
python
request
jupyter
urllib
【解决方案1】:
如果您使用urllib 库,请在发出打开 URL 的请求时使用上下文参数。这是实现:
import urllib.request
import ssl
#Ignore SSL certificate errors
ssl_context = ssl.create_default_context()
ssl_context.check_hostname = False
ssl_context.verify_mode = ssl.CERT_NONE
html = urllib.request.urlopen(url, context=ssl_context).read()
【解决方案2】:
如果您能够考虑使用 requests 库而不是 urllib,那么您只需这样做
import requests
response = requests.get('your_url', verify=False)
但也要考虑警告here。