通过R打开和关闭URL的方法

302 阅读2分钟

本教程解释了如何通过R打开和关闭浏览器中的多个标签。当你需要做一些自动化操作,需要打开URL和刷新网页并从中获取内容时,这很有用。我用它来刷新谷歌表中的GOOGLEFINANCE( ) TODAY( ) NOW() 公式,这样我就可以拉出实时的股票价格。

下面的R函数允许围绕内置的browseURL( ) 函数的灵活性。它支持以下参数 -

  1. URL指定你想在浏览器中访问的URL。你也可以在一个字符向量中传递多个URL。
  2. browserName默认为空白,这意味着URL将在你的默认浏览器中打开。如果你想在一个特定的浏览器中打开它,你可以通过ChromeEdge
  3. close如果你想关闭你所打开的标签。默认情况下,它是禁用的。你可以通过以下方式启用它close = T
  4. 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"