本教程解释了如何通过R打开和关闭浏览器中的多个标签。当你需要做一些自动化操作,需要打开URL和刷新网页并从中获取内容时,这很有用。我用它来刷新谷歌表中的GOOGLEFINANCE( ) TODAY( ) NOW() 公式,这样我就可以拉出实时的股票价格。
下面的R函数允许围绕内置的browseURL( ) 函数的灵活性。它支持以下参数 -
- URL指定你想在浏览器中访问的URL。你也可以在一个字符向量中传递多个URL。
- browserName默认为空白,这意味着URL将在你的默认浏览器中打开。如果你想在一个特定的浏览器中打开它,你可以通过
Chrome或Edge - close如果你想关闭你所打开的标签。默认情况下,它是禁用的。你可以通过以下方式启用它
close = T - Sleep你想在关闭活动标签之前等待多少秒?
在使用下面的用户定义函数之前,请确保安装并加载winsendkeysR包。
remotes::install_github("miraisolutions/winsendkeys")
browserFun <- function(URL = "https://www.google.com",
browserName = NULL,
Sleep = 20,
close = F) {
if (is.null(browserName) && close) {
stop("Browser name is required when close = TRUE")
}
# Path of Google Chrome / MS Edge
if (is.null(browserName)) {
browser = getOption("browser")
} else if(tolower(browserName) == "chrome") {
browser = "C:\\Program Files (x86)\\Google\\Chrome\\Application\\chrome.exe"
} else if (tolower(browserName) == "edge") {
browser = "C:\\Program Files (x86)\\Microsoft\\Edge\\Application\\msedge.exe"
}
# Open URL
if(length(URL) > 1) {
lapply(URL,function(x) browseURL(as.character(x), browser = browser))
} else {
browseURL(URL, browser = browser)
}
# Close URL
if(close) {
Sys.sleep(Sleep)
# Send Keys
if(tolower(browserName) == "chrome") {
winsendkeys::activateWindow("Chrome")
} else if (tolower(browserName) == "edge") {
winsendkeys::activateWindow("Edge")
}
if(length(URL) > 1) {
winsendkeys::sendKeys("{DELAY=100}%{F4}")
} else {
winsendkeys::sendKeys("{DELAY=50}^w")
}
}
NULL
}
在你的默认浏览器中打开URL
browserFun(URL = 'https://google.com')
在你的默认浏览器中打开多个URL
多个URL将在浏览器的多个标签中显示。
URL = c('https://google.com', 'https://yahoo.com')
browserFun(URL = URL)
在谷歌浏览器中打开URL
browserFun(URL = 'https://google.com', browserName = "Chrome")
对于Microsoft Edge,你可以使用browserName = "Edge"
在打开5秒后关闭URL
browserFun(URL = 'https://google.com', browserName = "Edge", Sleep = 5, close = T)
打开15秒后关闭多个URL
URL = c('https://google.com', 'https://yahoo.com')
browserFun(URL = URL, browserName = "Edge", Sleep = 15, close = T)
重要说明
在你的系统中,chrome或edge的可执行文件(.exe)的位置可能不同。如果是这样的话,你需要在该功能中改变下面的文件位置。你也可以添加其他浏览器,如Firefox或Safari。
"C:\\Program Files (x86)\\Google\\Chrome\\Application\\chrome.exe"
"C:\\Program Files (x86)\\Microsoft\\Edge\\Application\\msedge.exe"