今天在写爬虫的时候遇到一个错误,即:
(Caused by SSLError(SSLEOFError(8, 'EOF occurred in violation of protocol (_ssl.c:1129)')))
搜索一番发现是因为电脑开了代理(科学上网工具)的原因。
但是实际上代理是可以正常使用的。
但是需求访问的资源偏偏是要使用代理的才能访问的。
最后发现应该是urllib3的版本问题,安装urllib3:1.25.11的版本可以解决。
原文地址:EOF occurred in violation of protocol (_ssl.c python3.7 使用代理报错
使用命令:
pip install urllib3==1.25.11
安装好后发现则不会报错了。
但是还有个问题,安装好urllib31.25.11后,依然出现了错误提示,提示图片如下:

提示错误原因:
selenium 4.1.5 requires urllib3[secure,socks]~=1.26, but you have urllib3 1.25.11 which is incompatible.
elastic-transport 8.0.1 requires urllib3<2,>=1.26.2, but you have urllib3 1.25.11 which is incompatible.
# 大概意思就是 selenium 4.1.5 和 elastic-transport 8.0.1 分别对urllib3的版本要求是1.26、1.26.2
这样看来,如果我要再使用selenium、elastic-transport这两个东西的话,还得升级回去(emmm...捂脸,至于其他的方法,我没找到...如果有大佬知道期待告诉我)。
不过不使用上述两个东西的小伙伴忽略就好了。
再为了避免冲突的情况下,可以安装python虚拟环境,我们可以使用veny模块进行创建。
博主笔记:python虚拟环境使用
官方文档地址:https://docs.python.org/zh-cn/3/library/venv.html
介绍:
venv 模块支持使用自己的站点目录创建轻量级“虚拟环境”,可选择与系统站点目录隔离。每个虚拟环境都有自己的 Python 二进制文件(与用于创建此环境的二进制文件的版本相匹配),并且可以在其站点目录中拥有自己独立的已安装 Python 软件包集。
具体的创建,我们看官方文档就好啦,这样在虚拟环境中完成另外一个项目,就不会有包冲突的情况了。
