Python Selenium报TimeoutException接收渲染器消息超时如何解决
可尝试的解决方案
- 调整页面加载策略与超时配置
给Chrome选项添加页面加载策略配置,避免等待无意义的静态资源加载:chrome_options.page_load_strategy = 'eager'
同时初始化driver后显式设置各环节超时阈值,避免无限等待:
对driver.set_page_load_timeout(30) # 页面加载最长等待30秒 driver.set_script_timeout(30) # JS执行最长等待30秒driver.get()逻辑添加异常捕获,超时后先尝试刷新重试,连续失败2-3次再跳过当前URL。 - 定时清理资源与重置driver实例
每处理完1个URL,主动清理残留数据:
每处理30-50个URL,主动调用driver.delete_all_cookies() driver.execute_script("window.localStorage.clear(); window.sessionStorage.clear();")driver.quit()销毁当前实例,重新初始化新的driver对象,彻底解决Chrome进程内存泄漏、渲染进程假死的问题,这是批量爬取场景下最有效的解决方案之一。 - 补充优化Chrome启动参数
可以在现有配置基础上新增以下参数,规避已知的Headless模式缺陷:
同时可以移除chrome_options.add_argument('--headless=new') # 启用Chrome 91+ *新版Headless模式*,兼容性远高于旧版实现 chrome_options.add_argument('--disable-gpu') # 禁用GPU渲染,避免硬件加速相关的渲染崩溃 chrome_options.add_argument('--disable-extensions') # 禁用所有扩展插件 chrome_options.add_argument('--disable-background-networking') # 禁用后台更新、同步等非必要网络请求 chrome_options.add_argument('--aggressive-cache-discard') # 主动释放缓存降低内存占用 chrome_options.add_argument('--disable-ipc-flooding-protection') # 关闭IPC限流,避免高频请求时渲染进程被强制终止--remote-debugging-port=9222配置,固定调试端口如果被占用也可能引发通信异常,默认随机端口即可。 - 修复版本匹配问题
当前Chrome版本为91.0.4472.114,Chromedriver版本为91.0.4472.101,小版本不匹配存在兼容性隐患,建议替换为和Chrome版本完全一致的Chromedriver。如果业务允许,也可以将Chrome和Chromedriver同步升级到最新稳定版,91版本本身存在多个Headless模式下的渲染超时已知Bug。
内容的提问来源于stack exchange,提问作者DiamondJoe12
相关产品推荐
相关产品推荐

