快速体验
- 打开 InsCode(快马)平台 https://www.inscode.net
- 输入框内输入如下内容:
开发一个电商价格监控爬虫,使用Selenium获取商品价格。处理可能出现的SessionNotCreatedException,包括:1)检查ChromeDriver版本与浏览器匹配 2)确保无重复浏览器进程 3)验证代理设置 4)检查防火墙限制 5)处理浏览器自动更新导致的版本冲突。提供详细的错误日志和自动恢复机制。 - 点击'项目生成'按钮,等待项目生成完整后预览效果
最近在开发一个电商价格监控爬虫时,遇到了一个让人头疼的问题:selenium.common.exceptions.SessionNotCreatedException: message: session not。这个错误让我抓狂了好一阵子,经过一番折腾和摸索,终于找到了几种有效的解决方法。今天就来分享一下我的实战经验,希望能帮到同样遇到这个问题的朋友。
1. 检查ChromeDriver版本与浏览器匹配
这是最常见的问题之一。ChromeDriver的版本必须与你安装的Chrome浏览器版本完全匹配。如果版本不匹配,Selenium就无法正常启动浏览器会话。
- 首先,确认你安装的Chrome浏览器版本。可以在浏览器地址栏输入
chrome://version/查看。 - 然后,下载对应版本的ChromeDriver。可以在ChromeDriver的官方下载页面找到版本对照表。
- 替换项目中旧版本的ChromeDriver,确保路径正确。
2. 确保无重复浏览器进程
有时,之前的浏览器进程没有完全关闭,会导致新的会话无法创建。
- 在代码中添加清理逻辑,确保每次运行结束后关闭所有浏览器进程。
- 在Windows上可以通过任务管理器手动结束所有Chrome相关进程。
- 在Linux或Mac上可以使用命令行工具(如
pkill)来终止进程。
3. 验证代理设置
如果你的网络环境使用了代理,可能会干扰Selenium的正常连接。
- 检查代码中是否设置了代理,确保代理配置正确。
- 尝试关闭代理或使用直连模式,看看问题是否解决。
- 如果必须使用代理,确保代理服务器稳定且允许Selenium的请求通过。
4. 检查防火墙限制
防火墙或安全软件有时会阻止Selenium与浏览器的通信。
- 临时关闭防火墙,测试是否能够正常运行。
- 如果关闭防火墙后问题解决,可以在防火墙中添加Selenium和ChromeDriver的例外规则。
- 确保网络策略没有限制本地回环地址(127.0.0.1)的通信。
5. 处理浏览器自动更新导致的版本冲突
Chrome浏览器会自动更新,但ChromeDriver不会自动更新,这可能导致版本不匹配。
- 禁用Chrome的自动更新功能,或者定期检查并更新ChromeDriver。
- 在代码中添加版本检查逻辑,如果检测到版本不匹配,自动下载正确的ChromeDriver版本。
- 考虑使用WebDriverManager这类工具来自动管理驱动版本。
错误日志与自动恢复机制
为了更高效地排查问题,建议在代码中添加详细的错误日志记录。记录以下信息:
- Chrome浏览器版本和ChromeDriver版本
- 操作系统环境
- 代理和网络配置
- 完整的错误堆栈信息
同时,可以设计一个自动恢复机制,比如:
- 捕获
SessionNotCreatedException异常 - 根据错误信息尝试上述解决方法
- 如果多次尝试失败,发送通知或记录错误日志
总结
遇到SessionNotCreatedException时,不要慌张,按照以上方法一步步排查,通常都能找到问题所在。最重要的是保持耐心,记录详细的日志,这样下次再遇到类似问题时就能快速解决。
如果你也在开发类似的项目,可以试试InsCode(快马)平台,它提供了一键部署功能,让你的爬虫项目快速上线。我自己用过几次,发现部署过程真的很省心,不用手动配置环境,特别适合像我这样懒得折腾的人。
希望这篇文章能帮到你,如果有其他问题,欢迎留言讨论!
快速体验
- 打开 InsCode(快马)平台 https://www.inscode.net
- 输入框内输入如下内容:
开发一个电商价格监控爬虫,使用Selenium获取商品价格。处理可能出现的SessionNotCreatedException,包括:1)检查ChromeDriver版本与浏览器匹配 2)确保无重复浏览器进程 3)验证代理设置 4)检查防火墙限制 5)处理浏览器自动更新导致的版本冲突。提供详细的错误日志和自动恢复机制。 - 点击'项目生成'按钮,等待项目生成完整后预览效果
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考