RSelenium调用rsDriver返回$id为NA,无法启动浏览器抓取网页
解决RSelenium无法启动Chrome并导航的问题
核心问题分析
输出中$id [1] NA说明RSelenium未能成功建立与ChromeDriver的会话,browser$navigate(url)返回NULL是因为会话未正常初始化。主要原因大概率是RSelenium 1.7.9与Selenium Server 4.x兼容性不佳,其次是驱动版本匹配、端口占用问题。
具体解决方案
1. 对齐Chrome浏览器与ChromeDriver版本
- 打开Chrome,通过「设置→关于Chrome」确认浏览器版本,必须与
chromever参数完全一致(你的是109.0.5414.74,确保Chrome浏览器也是这个版本)。 - 若版本匹配仍有问题,让wdman自动下载匹配的驱动:
driver <- rsDriver(browser = "chrome", chromever = "latest", port = 9515L)
2. 降级Selenium Server到兼容版本
RSelenium 1.7.9对Selenium 4.x支持有限,建议切换到Selenium 3.141.59版本:
library(wdman) # 下载并指定Selenium 3.141.59 driver <- rsDriver(browser = "chrome", chromever = "109.0.5414.74", port = 9515L, version = "3.141.59")
3. 检查并释放端口占用
Windows 10下打开命令提示符,执行以下命令排查端口9515是否被占用:
netstat -ano | findstr :9515
如果有输出,杀掉对应进程(替换[进程号]为实际数字):
taskkill /F /PID [进程号]
之后重新运行RSelenium代码。
4. 手动启动驱动与Selenium Server后连接
如果自动启动失败,尝试手动启动组件再连接:
- 打开命令提示符,进入ChromeDriver所在目录,启动驱动:
chromedriver.exe --port=9515 - 启动Selenium Server(替换为你下载的3.141.59版本jar包路径):
java -jar selenium-server-standalone-3.141.59.jar -port=4444 - 在R中连接已启动的服务:
library(RSelenium) browser <- remoteDriver(remoteServerAddr = "localhost", port = 4444, browserName = "chrome") browser$open() browser$navigate(url)
5. 清理旧驱动文件
清理wdman缓存的旧驱动,避免版本冲突:
wdman::selenium(retclean = TRUE) wdman::chromedriver(retclean = TRUE)
之后重新运行rsDriver,让wdman重新下载对应版本的驱动文件。
6. 指定Chrome与驱动路径
如果Chrome未安装在默认路径,需手动指定:
driver <- rsDriver(browser = "chrome", chromever = "109.0.5414.74", port = 9515L, extraCapabilities = list( chromeOptions = list( binary = "C:/Program Files/Google/Chrome/Application/chrome.exe" ) ))
内容的提问来源于stack exchange,提问作者sk21
相关产品推荐
相关产品推荐

