使用requests爬取报错“Max retries exceeded with url“的解决方法

某次在写爬虫时,运行之后报错

requests.exceptions.ProxyError:
HTTPSConnectionPool(host=‘xxx.xxx.xxx’, port=443):
Max retries exceeded with url: xxxxxxx (Caused by ProxyError
(‘Cannot connect to proxy.’, NewConnectionError(’<urllib3.connection.HTTPSConnection object at 0x000001EF209B1D30>: Failed to establish a new connection: [WinError 10060] 由于连接方在一段时间后没有正确答复或连接的主机没有反应,连接尝试失败。’)))

原因:

  1. http连接太多没有关闭导致的
  2. 可能是访问过于频繁,使用IP代理即可

使用IP代理参考以下文章
Python爬虫避坑IP代理教程避坑(reuqests和selenium的ip代理)

解决办法

1、增加重试连接次数
requests.DEFAULT_RETRIES = 5
s = requests.session()
2、关闭多余的连接
s.keep_alive = False

requests使用了urllib3库,默认的http connection是keep-alive的,requests设置False关闭。

如果对大家有帮助,可以点赞关注和收藏一下哦,谢谢各位!

更多博主开源爬虫教程目录索引
在这里插入图片描述

### 解决 Python Requests 库 GET 请求重试次数过多的问题 当遇到 `Max retries exceeded` 错误时,通常是因为目标服务器无法建立连接或 SSL 验证失败等问题。针对此问题有几种解决方案: #### 方法一:增加超时时间和重试策略配置 通过自定义会话对象并设置更合理的超时时间以及重试机制能够有效减少此类错误的发生。 ```python import requests from requests.adapters import HTTPAdapter from requests.packages.urllib3.util.retry import Retry retry_strategy = Retry( total=3, backoff_factor=1, status_forcelist=[429, 500, 502, 503, 504], method_whitelist=["HEAD", "GET", "OPTIONS"] ) adapter = HTTPAdapter(max_retries=retry_strategy) http = requests.Session() http.mount("https://", adapter) response = http.get('https://example.org/', timeout=(3.05, 27)) # connect timeout and read timeout ``` 上述代码片段展示了如何创建带有特定重试逻辑的 Session 对象,并将其应用于 HTTPS 协议下的请求操作中[^2]。 #### 方法二:忽略SSL验证(推荐用于生产环境) 对于某些情况下确实存在证书链路问题而导致的 SSL 认证失败,则可以选择暂时关闭 SSL 验证功能来进行调试工作;但在实际部署前应尽快修复该缺陷以保障通信安全。 ```python requests.get(url, verify=False) # Warning: This disables SSL verification which is not recommended for production environments. ``` 需要注意的是,在禁用 SSL 后可能会收到警告信息提示潜在风险,可以通过安装对应站点的信任根 CA 或者更新本地系统的受信任 CAs 列表来解决问题[^1]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值