You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

RSelenium连接服务器失败:无法确定服务器状态问题求助

RSelenium服务器连接问题求助

我在使用RSelenium爬取JavaScript驱动网站的数据时遇到了服务器连接问题,恳请帮助。

当前代码

## R Selenium ##

install.packages("netstat")

library(RSelenium)
library(tidyverse)
library(netstat)

port1 <- 9515
port1 <- as.integer(port1)


## start the server ##
rs_driver_object <- rsDriver(browser = "chrome",
                             port = free_port())

运行报错信息

"Could not open chrome browser.
Client error message:
Undefined error in httr call. httr output: Failed to connect to localhost port 14415 after 2252 ms: Connection refused
Check server log for further details.
Warning message:
In rsDriver(browser = "chrome", port = free_port()) :
Could not determine server status."

排查日志

执行以下代码:

selServ <- wdman::selenium(verbose = FALSE)
selServ$log()

得到日志:

$stderr
[1] "Fehler: Hauptklasse c(-Dwebdriver.chrome.driver=\"C:\\Users\\MarcF\\AppData\\Local\\binman\\binman_chromedriver\\win32\\113.0.5672.24.chromedriver.exe\", konnte nicht gefunden oder geladen werden"
[2] "Ursache: java.lang.ClassNotFoundException: c(-Dwebdriver.chrome.driver=\"C:\\Users\\MarcF\\AppData\\Local\\binman\\binman_chromedriver\\win32\\113.0.5672.24.chromedriver.exe\","                   

$stdout
character(0)

会话信息

R version 4.2.2 (2022-10-31 ucrt)
Platform: x86_64-w64-mingw32/x64 (64-bit)
Running under: Windows 10 x64 (build 19044)

Matrix products: default

locale:
[1] LC_COLLATE=German_Germany.utf8  LC_CTYPE=German_Germany.utf8    LC_MONETARY=German_Germany.utf8
[4] LC_NUMERIC=C                    LC_TIME=German_Germany.utf8    

attached base packages:
[1] stats     graphics  grDevices utils     datasets  methods   base     

other attached packages:
 [1] netstat_0.1.2   forcats_0.5.2   stringr_1.5.0   dplyr_1.1.0     purrr_1.0.1     readr_2.1.3     tidyr_1.3.0    
 [8] tibble_3.1.8    ggplot2_3.4.1   tidyverse_1.3.2 RSelenium_1.7.9

loaded via a namespace (and not attached):
 [1] tidyselect_1.2.0    haven_2.5.1         gargle_1.2.1        colorspace_2.1-0    vctrs_0.5.2        
 [6] generics_0.1.3      yaml_2.3.7          utf8_1.2.3          rlang_1.0.6         pillar_1.8.1       
[11] withr_2.5.0         glue_1.6.2          DBI_1.1.3           rappdirs_0.3.3      dbplyr_2.2.1       
[16] readxl_1.4.1        semver_0.2.0        modelr_0.1.10       lifecycle_1.0.3     munsell_0.5.0      
[21] binman_0.1.3        gtable_0.3.1        cellranger_1.1.0    rvest_1.0.3         caTools_1.18.2     
[26] wdman_0.2.6         tzdb_0.3.0          ps_1.7.2            curl_5.0.0          fansi_1.0.4        
[31] broom_1.0.3         Rcpp_1.0.9          backports_1.4.1     scales_1.2.1        googlesheets4_1.0.1
[36] jsonlite_1.8.4      fs_1.5.2            hms_1.1.2           stringi_1.7.8       processx_3.8.0     
[41] grid_4.2.2          cli_3.4.1           tools_4.2.2         bitops_1.0-7        magrittr_2.0.3     
[46] crayon_1.5.2        pkgconfig_2.0.3     ellipsis_0.3.2      xml2_1.3.3          reprex_2.0.2       
[51] googledrive_2.0.0   lubridate_1.9.1     timechange_0.1.1    assertthat_0.2.1    httr_1.4.4         
[56] rstudioapi_0.14     R6_2.5.1            compiler_4.2.2    

解决方案

从日志看,问题根源是ChromeDriver的启动参数被错误解析,Java无法找到指定主类,本质是wdman传递ChromeDriver路径时出现格式错误。可按以下步骤解决:

  • 手动指定ChromeDriver路径启动服务
    先确认日志中的ChromeDriver路径,再用wdman::selenium手动配置启动:

    # 关闭残留服务
    if(exists("selServ")) selServ$stop()
    
    # 启动Selenium服务
    selServ <- wdman::selenium(
      port = free_port(),
      chromever = "113.0.5672.24", # 匹配你的ChromeDriver版本
      extraCapabilities = list(
        chromeOptions = list(
          args = c("--no-sandbox", "--disable-dev-shm-usage")
        )
      )
    )
    
    # 连接服务
    remDr <- remoteDriver(
      remoteServerAddr = "localhost",
      port = selServ$port,
      browserName = "chrome"
    )
    
    remDr$open()
    
  • 检查Chrome与ChromeDriver版本匹配
    确保Chrome浏览器版本和ChromeDriver版本完全一致(日志中为113.0.5672.24),版本不匹配会导致启动失败。可通过binman::list_versions("chromedriver")查看已安装版本,或下载对应版本替换。

  • 清理binman缓存
    若驱动文件损坏,清理后重新下载:

    binman::uninstall("chromedriver", version = "113.0.5672.24")
    binman::install_chromedriver(version = "113.0.5672.24")
    
  • 直接启动ChromeDriver进程
    绕过rsDriver,手动启动ChromeDriver再连接:

    # 启动ChromeDriver
    chromedriver_path <- "C:\\Users\\MarcF\\AppData\\Local\\binman\\binman_chromedriver\\win32\\113.0.5672.24.chromedriver.exe"
    system(paste0(chromedriver_path, " --port=9515"), wait = FALSE)
    
    # 连接
    remDr <- remoteDriver(port = 9515, browserName = "chrome")
    remDr$open()
    

内容的提问来源于stack exchange,提问作者QuantaAgora1995

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.25 05:42:55