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)

posted on 2024-12-11 14:49  梁飞宇  阅读(79)  评论(0)    收藏  举报