尽管弹出窗口,但通过 R 从 Internet 下载文件 [英] Download file from internet via R despite the popup

查看:19
本文介绍了尽管弹出窗口,但通过 R 从 Internet 下载文件的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

使用 R 从 Internet 下载文件很容易,并且 已经之前提到过.

Downloading a file from the internet using R is easy and has been addressed previously.

我的问题是关于如何绕过似乎阻止我执行下载的弹出消息.具体来说,

My question regards how to get past a popup message that seems to prevent my download from executing. Specifically,

download.file(url = "https://www.chicagofed.org/applications/bhc_data/bhcdata_index.cfm?DYR=2012&DQIR=4", destfile = "data/test.zip")

给了我一个小垃圾文件,而不是你去 网站并手动输入年份2012和季度4.我怀疑问题在于,正如您手动执行时可以看到的那样,弹出窗口会中断下载过程,询问是保存文件还是打开文件.有什么方法可以自动通过弹出窗口(即通过 download.file)?

gives me a little file of garbage instead of the desired 18 megabyte file that you would get if you went to the website and entered the year 2012 and the quarter 4 manually. I suspect that the issue is that, as can be seen when you do it manually, a popup window interrupts the download process, asking whether to save the file or open it. Is there any way to get past the popup automatically (i.e., via download.file)?

推荐答案

这可以用 Selenium 来完成,参见 https://github.com/ropensci/RSelenium.

This can be done with Selenium see https://github.com/ropensci/RSelenium.

require(wdman)
require(RSelenium)


selPort <- 4444L
fprof <- makeFirefoxProfile(list(browser.download.dir = "C:\temp"
                                 ,  browser.download.folderList = 2L
                                 , browser.download.manager.showWhenStarting = FALSE
                                 , browser.helperApps.neverAsk.saveToDisk = "application/zip"))
selServ <- selenium(port = selPort)
remDr <- remoteDriver(extraCapabilities = fprof, port = selPort)
remDr$open(silent = TRUE)
remDr$navigate("https://www.chicagofed.org/applications/bhc_data/bhcdata_index.cfm")
# click year 2012
webElem <- remDr$findElement("name", "SelectedYear")
webElems <- webElem$findChildElements("css selector", "option")
webElems[[which(sapply(webElems, function(x){x$getElementText()}) == "2012" )]]$clickElement()

# click required quarter

webElem <- remDr$findElement("name", "SelectedQuarter")
Sys.sleep(1)
webElems <- webElem$findChildElements("css selector", "option")
webElems[[which(sapply(webElems, function(x){x$getElementText()}) == "4th Quarter" )]]$clickElement()

# click button

webElem <- remDr$findElement("id", "downloadDataFile")
webElem$clickElement()

这篇关于尽管弹出窗口,但通过 R 从 Internet 下载文件的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆