用Rselenium和docker工具箱下载文件

我试图通过Rselenium下载文件,但它看起来不可能。即使有一个简单的例子,我也不会下载:

1)我已经安装了docker工具箱( https://cran.r-project.org/web/packages/RSelenium/vignettes/RSelenium-docker.html )

2)我跑的Firefox独立的形象:3.1.0和现在即时通讯testing较旧的2.52.0

3)我已经在My R X64 3.3.2上安装了rselenium软件包,并且阅读了所有关于计算器的问题和解答

4)我已经尝试了下面的代码,顺便说一下,当我分析有关Firefox的选项:configuration,我没有find“browser.download.dir”选项:

require(RSelenium) fprof <- makeFirefoxProfile(list(browser.download.dir = "C:/temp" , browser.download.folderList = 2L , browser.download.manager.showWhenStarting = FALSE , browser.helperApps.neverAsk.saveToDisk = "application/zip")) remDr <- remoteDriver(browserName = "firefox",remoteServerAddr = "192.168.99.100",port = 4445L,extraCapabilities = fprof) remDr$open(silent = TRUE) remDr$navigate("https://www.chicagofed.org/applications/bhc/bhc-home") # 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() 

6)我没有错误,但我没有文件

7)最后,我想下载由Rselenium在这个页面上的Excel文件:

[link] https://app2.msci.com/products/indexes/performance/country_chart.html?asOf=Feb%2028,%202010&size=30&scope=C&style=C&currency=15&priceLevel=0&indexId=83#

如果您在Dock中使用Docker工具箱,则映射卷可能有问题请参阅Docker:使用Docker工具箱在Windows上共享卷

如果您在Mac或Windows上使用Docker Machine,则Docker守护程序对OS X或Windows文件系统的访问权限有限。 Docker机器尝试自动共享您的/ Users(OS X)或C:\ Users(Windows)目录。

我启动了一个干净的Docker工具箱安装在Windows 10框中,并运行以下图像:

 $ docker stop $(docker ps -aq) $ docker rm $(docker ps -aq) $ docker run -d -v //c/Users/john/test/://home/seluser/Downloads -p 4445:4444 -p 5901:5900 selenium/standalone-firefox-debug:2.53.1 

注意: 我们映射到Users / john空间中的一个目录。 用户john正在运行docker工具箱

运行下面的代码

 require(RSelenium) fprof <- makeFirefoxProfile(list(browser.download.dir = "home/seluser/Downloads" , browser.download.folderList = 2L , browser.download.manager.showWhenStarting = FALSE , browser.helperApps.neverAsk.saveToDisk = "application/zip")) remDr <- remoteDriver(browserName = "firefox",remoteServerAddr = "192.168.99.100",port = 4445L,extraCapabilities = fprof) remDr$open(silent = TRUE) remDr$navigate("https://www.chicagofed.org/applications/bhc/bhc-home") # 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() 

并检查映射的下载文件夹

 > list.files("C://Users/john/test") [1] "bhcf1212.zip" > 

最后我决定做一个干净的安装的docker for windows(17.03.0)stable。 我需要减less可用的CPU数量(1)和可用的RAM(1GB)。 我也有共享我的c(顺便说一句,这是必须的密码会话,否则你不能共享目录后,我重新启动我的电脑在R端,不要忘记删除:remoteServerAddr =“192.168.99.100”和我拿到了文件。

我现在的担心是关于docker工人的稳定性,有时候会跑,有时候不会。

非常感谢约翰对你的帮助