RSelenium中rsDriver无法连接远程服务器问题求助
问题:RSelenium启动Chrome返回NA值的原因与解决方法
我尝试用RSelenium进行网页爬取,执行了以下R代码:
library(RSelenium) rD <- rsDriver(browser = "chrome", port = 9515L, phantomver = NULL, extraCapabilities = list(`chromeOptions` = list(binary = "C:/Program Files/Google/Chrome/Application/chrome.exe")))
运行后得到如下输出:
checking Selenium Server versions: BEGIN: PREDOWNLOAD BEGIN: DOWNLOAD BEGIN: POSTDOWNLOAD checking chromedriver versions: BEGIN: PREDOWNLOAD BEGIN: DOWNLOAD BEGIN: POSTDOWNLOAD checking geckodriver versions: BEGIN: PREDOWNLOAD BEGIN: DOWNLOAD BEGIN: POSTDOWNLOAD [1] "Connecting to remote server" $id [1] NA
我的chromedriver状态如图所示:
Java版本为Oracle JDK 20(从Oracle官方下载)。
请问为何会返回NA值?该如何解决此问题?
可能原因与解决办法
1. Chrome与chromedriver版本不匹配
这是最常见的触发原因:
- 打开Chrome,在地址栏输入
chrome://version/查看浏览器完整版本号 - 下载与Chrome版本完全对应的chromedriver,替换现有驱动文件(大版本必须一致,比如Chrome是114.x,chromedriver也得是114.x系列)
2. Java版本兼容性问题
Selenium Server对Java LTS版本支持更稳定,JDK 20属于非长期支持版本,易出现兼容问题:
- 降级到JDK 11或JDK 17(LTS版本),安装后配置好系统环境变量,确保R能识别Java路径
3. 端口占用或权限不足
- 端口9515可能被其他程序占用,尝试更换端口,比如改为
port = 9516L - 以管理员身份运行RStudio或R终端,避免权限不足导致驱动启动失败
4. RSelenium配置优化
- 显式指定chromedriver版本,同时添加沙箱禁用参数,修改后的代码示例:
library(RSelenium) rD <- rsDriver( browser = "chrome", port = 9516L, phantomver = NULL, chromever = "你的Chrome对应版本号", # 示例:"114.0.5735.90" extraCapabilities = list( `chromeOptions` = list( binary = "C:/Program Files/Google/Chrome/Application/chrome.exe", args = list("--no-sandbox") ) ) )
- 若自动下载的驱动异常,可手动下载后,在
rsDriver中设置chromever = NULL,再通过系统环境变量指定chromedriver路径
5. 安全软件拦截
临时关闭防火墙或杀毒软件,检查是否是它们阻止了chromedriver或Selenium Server的运行
内容的提问来源于stack exchange,提问作者tshelky
相关产品推荐
相关产品推荐

