Python爬虫之Python urllib.request https urllib.error.URLError 错误
一、问题描述
python爬虫爬取网上数据时报如下错:
❌:urllib.error.URLError: <urlopen error [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:1020)>
问题产生的原因大概率是你电脑SSL证书没有,先用代码查看情况
#🌾:引入 ssl 内置模块 import ssl #🌾:查看SSL的情况 print(ssl.get_default_verify_paths())
这里能看到你SSL的情况:
DefaultVerifyPaths(cafile=None, capath=None, #这样就是cafile是空的 openssl_cafile_env='SSL_CERT_FILE', openssl_cafile='/Library/Frameworks/Python.framework/Versions/3.13/etc/openssl/cert.pem', openssl_capath_env='SSL_CERT_DIR', openssl_capath='/Library/Frameworks/Python.framework/Versions/3.13/etc/openssl/certs')
因为访问的网站是https://
,需要SSL认证,而直接用urllib
会导致本地验证失败。
二、解决方案
方案一:全局取消证书验证
from urllib import request import ssl # 导入ssl #🌾:全局取消证书验证 ssl._create_default_https_context = ssl._create_unverified_context #发送请求 response = request.urlopen("https://www.baidu.com/") print(response)
方案二:创建一个未经验证的上下文。
from urllib import request import ssl #🌾:创建未经验证的上下文 context = ssl._create_unverified_context() #发送请求 response = request.urlopen('https://www.baidu.com',context=context) print(response)