Python用requests.get请求carrefouruae站点无响应码程序持续运行如何解决
问题原因
- 目标站点配置了基础反爬策略,requests默认发送的请求缺少浏览器特征,会被服务端识别为爬虫请求,因此服务端不会返回正常响应,导致连接持续挂起
- requests默认未设置请求超时阈值,请求未触发主动中断逻辑,所以程序会一直处于等待运行状态
- 部分地区网络到该站点的链路连通性不佳,也可能导致请求长时间无响应
修复方案
按以下步骤调整代码即可解决:
- 给
requests.get方法添加timeout参数,设置请求的最长等待时间,单位为秒,超时后会主动抛出中断异常,避免程序无限挂起 - 构造模拟浏览器的请求头,补充
User-Agent字段伪装成正常浏览器访问,绕过基础反爬校验 - 按需添加异常捕获逻辑,处理请求过程中可能出现的超时、连接错误等各类异常
修复后的参考代码如下:
import requests print("start") # 模拟Chrome浏览器的请求头 headers = { "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0.0.0 Safari/537.36" } try: # 设置10秒超时,添加自定义请求头 response = requests.get("https://www.carrefouruae.com/", headers=headers, timeout=10) print(f"响应状态码:{response.status_code}") print(response) except requests.exceptions.RequestException as err: print(f"请求发生错误:{err}") print("done")
额外说明
- 若调整后依然出现连接失败的情况,可检查本地网络到目标站点的连通性,必要时可配置代理参数发起请求
- 生产环境使用时,建议对超时、连接错误、HTTP错误等异常做分类捕获处理,提升程序稳定性
内容的提问来源于stack exchange,提问作者Mhd O.
相关产品推荐
相关产品推荐

