老宋的地盘

 找回密码
 我要加入
搜索
老宋 首页 文章 技术 查看内容

抓取网页信息报错 [SSL: CERTIFICATE_VERIFY_FAILED]

2023-12-28 11:27| 发布者: herosrx| 查看: 175| 评论: 0

摘要: 使用urllib.request 获取网页数据时报错,错误日志如下: certificate verify failed: unable to get local issuer certificate (_ssl.c:1002)字面上看,应该是由于网站使用的ssl加密导致,实际上产生这个问题的原因 ...
使用urllib.request 获取网页数据时报错,错误日志如下:

[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:1002)

字面上看,应该是由于网站使用的ssl加密导致,实际上产生这个问题的原因在于python本身,pyhon升级到2.7.9以后,引入了一个新特性,当使用urllib打开https的链接时,会检验一次ssl证书,而当目标网站使用的是自签名证书时,就会抛出urllib.URLError的错误。

解决方案如下两种方式:

1、全局取消证书验证  (提示找不到:_create_unverified_context
import ssl
ssl._create_default_https_context = ssl._create_unverified_context 
全局取消证书的验证,简易方便,但对整个项目会出现安全性的相关问题

2、局部取消证书验证#提示找不到_create_unverified_context
使用ssl创建未验证的上下文,在url中传入上下文参数
import ssl
context = ssl._create_unverified_context()  
# 将context传入url函数的context参数中即可
text = urlopen('https://www.python.org/jobs', context=context).read().decode()

3、自己安装Certificates.command
意思是获得本地发行者证书失败,那我们就来安装一下就好了。
在应用程序中,找到目前用的Python版本,双击install Certificates.command,安装成功之后,就可以了。




路过

雷人

握手

鲜花

鸡蛋

相关阅读

最新评论

歌名 - 歌手
0:00

    QQ|手机版|小黑屋|工具箱|老宋 ( 备案中... )

    GMT+8, 2024-11-21 19:08 , Processed in 0.087367 second(s), 19 queries , Gzip On.

    Powered by Discuz! X3.5

    © 2001-2024 Discuz! Team.

    返回顶部