提问人:stats_noob 提问时间:11/16/2023 更新时间:11/24/2023 访问量:25
R:将 Chromium 与 Selenium 一起使用,而不是 Chrome
R: Using Chromium with Selenium instead of Chrome
问:
我正在使用 R 编程语言。
我的问题:我有以下 R Selenium 脚本,它以前(2023 年 8 月)以前可以工作,但现在不起作用(2023 年 11 月):
library(RSelenium)
library(wdman)
library(netstat)
selenium()
# checking Selenium Server versions:
#BEGIN: PREDOWNLOAD
#BEGIN: DOWNLOAD
#BEGIN: POSTDOWNLOAD
#....
#BEGIN: DOWNLOAD
#BEGIN: POSTDOWNLOAD
#$process
#PROCESS 'file27547a8c5781.bat', running, pid 14124.
binman::list_versions("chromedriver")
#$win32
#[1] "113.0.5672.63" "114.0.5735.16" "114.0.5735.90"
seleium_object <- selenium(retcommand = T, check = F)
remote_driver <- rsDriver(browser = "chrome", chromever = "119.0.6045.105", verbose = F, port = free_port())
但是,这会导致以下错误:
Error in chrome_ver(chromecheck[["platform"]], chromever) :
version requested doesnt match versions available = 113.0.5672.63,114.0.5735.16,114.0.5735.90
我的问题:在上一个问题中(R:是否可以直接在 R 中下载最新版本的 Google Chrome?),我被告知我可以通过使用 Chromium (https://www.chromium.org/getting-involved/download-chromium/) 而不是 Google Chrome 来解决这个问题。但我以前从未使用过 Chromium - 我不确定如何安装它以及如何修改脚本的其余部分以使其与 Chromium 一起使用:
# rest of R/selenium script (currently does not work)
#remDr = remote_driver
#remDr$navigate("https://www.google.com/maps")
# Search for the CN Tower
#search_box <- remDr$findElement(using = 'css selector', "#searchboxinput")
#search_box$sendKeysToElement(list("CN Tower", key = "enter"))
#Sys.sleep(5)
# Get the URL of the current page
#url <- remDr$getCurrentUrl()[[1]]
# Extract the longitude and latitude from the URL
#long_lat <- gsub(".*@(-?[0-9.]+),(-?[0-9.]+),.*", "\\1,\\2", url)
#long_lat <- unlist(strsplit(long_lat, ","))
有人可以告诉我如何正确安装 chromium (例如,这可以直接使用 R 命令(例如 System() 或 shell.exec() )完成吗)以及如何修改我的 R selenium 脚本的其余部分,以便它与 Chromium 一起使用?
谢谢!
> sessionInfo()
R version 4.1.3 (2022-03-10)
Platform: x86_64-w64-mingw32/x64 (64-bit)
Running under: Windows 10 x64 (build 22621)
Matrix products: default
locale:
[1] LC_COLLATE=English_Canada.1252 LC_CTYPE=English_Canada.1252 LC_MONETARY=English_Canada.1252 LC_NUMERIC=C
[5] LC_TIME=English_Canada.1252
attached base packages:
[1] stats graphics grDevices utils datasets methods base
other attached packages:
[1] netstat_0.1.2 wdman_0.2.6 RSelenium_1.7.9 duckdb_0.7.1-1 DBI_1.1.3
loaded via a namespace (and not attached):
[1] Rcpp_1.0.8.3 rstudioapi_0.13 xml2_1.3.3 knitr_1.39 rappdirs_0.3.3 R6_2.5.1 rlang_1.0.6
[8] fastmap_1.1.0 httr_1.4.4 caTools_1.18.2 tools_4.1.3 xfun_0.30 binman_0.1.3 tinytex_0.45
[15] KernSmooth_2.23-20 cli_3.4.1 e1071_1.7-9 semver_0.2.0 htmltools_0.5.3 class_7.3-20 yaml_2.3.5
[22] digest_0.6.29 assertthat_0.2.1 processx_3.8.0 ps_1.7.2 bitops_1.0-7 curl_4.3.2 evaluate_0.19
[29] rmarkdown_2.14 proxy_0.4-26 compiler_4.1.3 classInt_0.4-3 jsonlite_1.8.4
答:
我能够解决这个问题(和朋友一起)。
首先,我访问了 Google Chrome 驱动程序网站:https://chromedriver.chromium.org/downloads -> https://googlechromelabs.github.io/chrome-for-testing/
然后,我下载了我想要的驱动程序的文件(2023 年 11 月 23 日,我下载了最新的可用版本,
ChromeDriver 114.0.5735.90
)然后,我解压缩了这个文件的内容,并用驱动程序的名称创建了一个新文件夹(我调用了该文件夹......这与我当前使用的 Google Chrome 版本相同:
119.0.6045.160
119.0.6045.160
)注意:我下载的驱动程序名称与我当前使用的谷歌浏览器版本不匹配
然后,我将这个新创建的文件夹的内容粘贴到以下文件夹中:
C:\Users\me\AppData\Local\binman\binman_chromedriver\win32
最后,我运行了以下代码,一切正常!
library(RSelenium)
library(wdman)
library(netstat)
selenium()
seleium_object <- selenium(retcommand = T, check = F)
# chromever has the same name as the file I downloaded
remote_driver <- rsDriver(browser = "chrome", chromever = "119.0.6045.160", verbose = F, port = free_port())
remDr<- remote_driver$client
lat <- 45.5048
lon <- -73.5772
URL <- paste0("https://www.google.com/maps/search/pizza/@", lat, ",", lon, ",17z/data=!3m1!4b1!4m6!2m5!3m4!2s", lat, ",", lon, "!4m2!1d", lon, "!2d", lat, "?entry=ttu")
remDr$navigate(URL)
评论