首次使用RSelenium调用rsDriver时遭遇Connection refused错误求助
问题回顾
首次使用RSelenium爬取动态网页,调用rsDriver()时抛出连接拒绝错误,代码如下:
rdriver <- rsDriver(browser = "chrome", port = free_port(), chromever = "109.0.5414.25")
错误信息:
[1] "Connecting to remote server" Could not open chrome browser.
Client error message: Undefined error in httr call. httr output:
Failed to connect to localhost port 14415: Connection refused Check
server log for further details. Warning message: In rsDriver(browser =
"chrome", port = free_port(), chromever = "109.0.5414.25") : Could
not determine server status.
版本信息:
- R 4.2.2
- Java(TM) SE Development Kit 19.0.2 (64 bit)
- chromedriver可用版本:
109.0.5414.25、109.0.5414.74、110.0.5481.30 - seleniumserver可用版本:
3.141.59、4.0.0-alpha-1、4.0.0-alpha-2
解决建议
严格匹配Chrome浏览器与chromedriver版本
确认本地安装的Chrome浏览器版本必须和指定的chromever完全一致(包括小版本号)。如果你的Chrome是110版本,就将chromever改为"110.0.5481.30";若Chrome是109.0.5414.74,则对应使用该版本的chromedriver。版本不匹配是最常见的启动失败原因。手动指定Chrome二进制文件路径
若RSelenium无法自动定位Chrome,可在参数中手动指定路径:rdriver <- rsDriver( browser = "chrome", port = free_port(), chromever = "109.0.5414.25", extraCapabilities = list( chromeOptions = list( binary = "C:/Program Files/Google/Chrome/Application/chrome.exe" # 替换为你的Chrome实际路径 ) ) )临时关闭防火墙/杀毒软件
错误提示"Connection refused"可能是本地安全软件阻止了端口连接,临时关闭防火墙或杀毒软件后再次尝试调用rsDriver(),确认是否是此原因导致。指定稳定版Selenium Server
尝试指定使用兼容性更好的Selenium Server 3.141.59版本:rdriver <- rsDriver( browser = "chrome", port = free_port(), chromever = "109.0.5414.25", seleniumserverver = "3.141.59" )手动启动Selenium Server再连接
- 下载对应版本的Selenium Server 3.141.59包,打开命令行执行:
java -jar selenium-server-standalone-3.141.59.jar - 在R中直接使用
remoteDriver连接已启动的服务:remDr <- remoteDriver( remoteServerAddr = "localhost", port = 4444, browserName = "chrome", extraCapabilities = list( chromeOptions = list( binary = "你的Chrome路径", args = c("--no-sandbox") ) ) ) remDr$open()
- 下载对应版本的Selenium Server 3.141.59包,打开命令行执行:
降级Java版本
Selenium 3.x系列对Java 17+版本兼容性较差,建议将Java降级到8或11版本后再尝试。
内容的提问来源于stack exchange,提问作者Maciej

