Python之解决urlopen error EOF occurred in violation of protocol问题

背景

近日在写Python爬虫解析网页,进行文章信息的获取、文件下载等

问题

突然遇到问题

urllib.error.URLError: <urlopen error EOF occurred in violation of protocol (_ssl.c:777)>

解决方法

得挂载http时指定一个adapter,让sslVersion为TLSV1。新增代码如下

from requests.adapters import HTTPAdapter
from urllib3.poolmanager import PoolManager
import ssl


class MyAdapter(HTTPAdapter):
    def init_poolmanager(self, connections, maxsize, block=False):
        self.poolmanager = PoolManager(num_pools=connections,
                                       maxsize=maxsize,
                                       block=block,
                                       ssl_version=ssl.PROTOCOL_TLSv1)


if __name__ == '__main__':
    s = requests.Session()
    s.mount('https://', MyAdapter())
    
    ..  # 老逻辑

结语

参考文献

python3 使用urllib报错urlopen error EOF occurred in violation of protocol (_ssl.c:841)

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值