RSelenium:使用Chrome下载文件时出错

问题描述 投票:1回答:1

我正在使用RSelenium下载一些.xls文件。我能够使用以下代码设置服务器获得一个有点可通过的解决方案,该服务器指定在我单击下载链接以及将文件下载到何处时不创建弹出窗口。但是,一旦我下载了第101个文件(保存为“report(100).xls”),下载弹出窗口就开始出现在浏览器中,Selenium正在开车。

eCaps <- list(
  chromeOptions = 
    list(prefs = list(
      "profile.default_content_settings.popups" = 0L,
      "download.prompt_for_download" = FALSE,
      "download.default_directory" = "mydownloadpath"
    )
    )
)

rd <- rsDriver(browser = "chrome", port=4566L, extraCapabilities = eCaps)

下载的功能如下:

vote.downloading <- function(url){

  #NB: this function assumes browser already up and running, options set correctly

  Sys.sleep(1.5)

  browser$navigate(url)

  down_button <- browser$findElement(using="css", 
                                     "table:nth-child(4) tr:nth-child(3) a")
  down_button$clickElement()


}

作为参考,我正在下载的网站如下所示:http://www.moscow_city.vybory.izbirkom.ru/region/moscow_city?action=show&root=774001001&tvd=4774001137463&vrn=4774001137457&prver=0&pronetvd=null&region=77&sub_region=77&type=427&vibid=4774001137463

用于下载的链接为那些不懂俄语的人写了“Версиядляпечати”。

我不能简单地在对话框开始弹出时停止该功能并从我离开的地方拿起,因为它是一个较大的功能的一部分,从下拉菜单中删除链接导致从下载链接到站点的链接。这也非常烦人,因为有400多个文件需要下载。

有什么方法可以改变Chrome配置文件或我的抓取功能,以防止系统对话框弹出每101个文件?或者是否有更好的方法来下载这些文件?

r web-scraping download rselenium
1个回答
1
投票

不需要Selenium:

library(httr)

httr::GET(
  url = "http://www.moscow_city.vybory.izbirkom.ru/servlet/ExcelReportVersion",
  query = list(
    region="77",
    sub_region="77",
    root="774001001",
    global="null",
    vrn="4774001137457",
    tvd="4774001137463",
    type="427",
    vibid="4774001137463",
    condition="",
    action="show",
    version="null",
    prver="0",
    sortorder="0"
  ),
  write_disk("/tmp/report.xls"), ## CHANGE ME
  verbose()
) -> res

我将它保存到一个对象,以便您可以运行warn_for_status()或其他此类检查。

应该直接将其包含在带参数的函数中,以使其更通用。

© www.soinside.com 2019 - 2024. All rights reserved.