爬虫遇到 HTTPSConnectionPool(host=‘xxxxx‘, port=443) 解决思路

1、原因  SSL 证书报错

http连接太多没有关闭导致的。
经过一番查询,发现该错误是因为如下:
http的连接数超过最大限制,默认的情况下连接是Keep-alive的,所以这就导致了服务器保持了太多连接而不能再新建连接。

    1、ip被封
    2、程序请求速度过快。

2、解决方式

(1)time.sleep()

(2)关闭 SSL 验证   verify=False

response = requests.get(fpath_or_url,headers=headers,stream=True, verify=False)

(3) requests默认是keep-alive的,可能没有释放,加参数 headers={'Connection':'close'}

# TODO ssl证书报错,参数 verify=False,同时,requests默认是keep-alive的,可能没有释放,加参数 headers={'Connection':'close'}
headers = {
                'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.129 Safari/537.36',
                'Connection':'close'
            }
response = requests.get(fpath_or_url,headers=headers,stream=True, verify=False)

(4) 增加重连次数 requests.adapters.DEFAULT_RETRIES = 5

# TODO ssl证书报错,参数 verify=False,同时,requests默认是keep-alive的,可能没有释放,加参数 headers={'Connection':'close'}
headers = {
          'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.129 Safari/537.36',
          'Connection':'close'
            }
# TODO 增加连接重试次数
requests.adapters.DEFAULT_RETRIES = 5
response = requests.get(fpath_or_url,headers=headers,stream=True, verify=False)

(5) 其他 忽略警告信息

3、Reference

       python 爬虫:https; HTTPSConnectionPool(host='z.jd.com', port=443)

 

 

你可能感兴趣的:(python)