从浏览器自动化过程下载和提取文件

时间:2019-04-03 19:31:56

标签: r rvest rselenium

我有一个脚本,该脚本使用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()是一个看起来像这样的按钮:

enter image description here

然后它开始处理,然后弹出:

enter image description here

同时,一个新文件出现在我的“下载”文件夹中,其外观如下:q5vu64p4.xlsx.part

我不知道为什么下载为xlsx.part,更不用说.part的含义了。虽然我可以通过Excel很好地打开文件,但由于每次文件名都不相同,因此很难实现自动化。一次是mkTjuSd2.xlsx.part,另一次是kZ8+dKF0.xlsx,所以没有一致性。

如何正确地以自动化方式提取文件?

1 个答案:

答案 0 :(得分:0)

这是一个变通办法,但是您可以通过检查目录以查找最近x秒内添加的文件来标识文件名。这样,您可以识别文件的名称。

fileNames <- list.files()
index <- which(Sys.time() - file.info(fileNames)$mtime < 1)
fileNames[index]

示例:

write.csv(1, file = "test2.csv")
fileNames <- list.files()
index <- which(Sys.time() - file.info(fileNames)$mtime < 1)
fileNames[index]