我有一个脚本,使用RSelenium自动下载Excel文件。我想要完成的是:假设这是自动化的并且每天在服务器上运行。如何下载并将其摄取回R?
library(rvest)
library(RSelenium)
remDr <- remoteDriver(port=4444L)
remDr$open()
remDr$navigate("http://abc.xyz.com/Login.aspx?ReturnUrl=%2fOrdersAndDelivery%2fOrderStatus.aspx")
username <- remDr$findElement(using = "name", value = "ctl00$MainContent$Login1$UserName")
username$sendKeysToElement(list("xxx"))
password <- remDr$findElement(using = "name", value = "ctl00$MainContent$Login1$Password")
password$sendKeysToElement(list("xxx"))
login <- remDr$findElement(using = "name",value = "ctl00$MainContent$Login1$LoginButton")
login$clickElement()
format_status <- remDr$findElement(using = 'xpath', "//*/option[@value = 'Excel']")
format_status$clickElement()
submit <- remDr$findElement(using = "id",value = "SubmitButton")
submit$clickElement()
最后的submit$clickElement()
是一个看起来像这样的按钮:
然后它会在弹出之前开始处理:
同时,我的“下载”文件夹中会出现一个新文件,如下所示:qazxsw poi
我不知道为什么它下载为q5vu64p4.xlsx.part
,更不用说知道xlsx.part
的意思。虽然我可以通过Excel完全打开文件,但是自动化很难,因为每次该文件的名称都不同。有一次它是.part
,另一次是mkTjuSd2.xlsx.part
所以没有一致性。
如何以自动方式正确摄取文件?
这是一种解决方法,但您可以通过检查最近x秒中添加的文件的目录来识别文件的名称。通过这样做,您可以识别文件的名称。
kZ8+dKF0.xlsx
例:
fileNames <- list.files()
index <- which(Sys.time() - file.info(fileNames)$mtime < 1)
fileNames[index]