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

问题描述 投票:1回答:1

我有一个脚本,使用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

同时,我的“下载”文件夹中会出现一个新文件,如下所示:qazxsw poi

我不知道为什么它下载为q5vu64p4.xlsx.part,更不用说知道xlsx.part的意思。虽然我可以通过Excel完全打开文件,但是自动化很难,因为每次该文件的名称都不同。有一次它是.part,另一次是mkTjuSd2.xlsx.part所以没有一致性。

如何以自动方式正确摄取文件?

r rvest rselenium
1个回答
0
投票

这是一种解决方法,但您可以通过检查最近x秒中添加的文件的目录来识别文件的名称。通过这样做,您可以识别文件的名称。

kZ8+dKF0.xlsx

例:

fileNames <- list.files()
index <- which(Sys.time() - file.info(fileNames)$mtime < 1)
fileNames[index]
© www.soinside.com 2019 - 2024. All rights reserved.