2016-01-08 72 views
2

我需要從數據庫下載excel文件(我無法提供代碼的原因)。我可以使用RSelenium單擊下載圖標。接下來會發生的是,通常的對話窗口會打開,詢問我是要保存還是打開文件。我怎樣才能壓制這條消息並將文件下載到一個文件夾中?用RSelenium下載Excel文件

我發現了一個關於pdf here的類似問題。答案表明,它應該通過指定extraCapabilities的可能:

remDr <- remoteDriver(remoteServerAddr = "localhost", 
        browserName = "firefox", 
        extraCapabilities = someCapabilities, 
        port = 4444) 

不幸的是,我無法弄清楚如何正確設置extraCapabilities

有人能告訴我一個方向嗎?感謝幫助。

編輯

我知道了解決方案的提供here並希望能夠使用extraCapabilities -Approach。

回答

2

下面是一個例子:

library(RSelenium) 
startServer() 
remDr <- remoteDriver(extraCapabilities = makeFirefoxProfile(list(
    "browser.helperApps.neverAsk.saveToDisk"="application/vnd.openxmlformats-officedocument.spreadsheetml.sheet") 
)) 
remDr$open() 
url <- "http://www.iwh-halle.de/e/fdz/IntBankLib/data/downloads/databases.xlsx" 
remDr$navigate(url) 
file.exists(file.path("~/Downloads/", basename(url))) 
# [1] TRUE 

注意,content type具有匹配:

library(httr) 
HEAD(url)$headers$`content-type` 
# [1] "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet" 

雖然你應該能夠使用通配符像*

+0

的'makeFirefoxProfile(...)'命令返回一個錯誤: 錯誤文件(TMPFILE, 「RB」):無法打開連接 另外:警告消息: 1:運行命令「 「拉鍊」 -r9Xjq「C:\ Users \ rockscience \ AppData \ Local \ Temp \ RtmpoPhjUb \ file31028ad12f9.zip」「C:\ Users \ rockscience \ AppData \ Local \ Temp \ RtmpoPhjUb/firefoxprofile/prefs.js」'狀態127 2 :在文件(tmpfile,「rb」)中: 無法打開文件'C:\ Users \ rockscience \ AppData \ Local \ Temp \ RtmpoPhjUb \ file31028ad12f9.zip':沒有這樣的文件或目錄 – RockScience

+0

也許是因爲我在docker中運行selenium ? – RockScience

+0

對不起,我不知道。 – lukeA