Download.File xls 问题 Excel 工作簿
Download.File Issue with xls Excel Workbook
我正在尝试使用 R 的 download.file
函数 (Windows 10, R version 3.4.4 (2018-03-15)
) 下载 Excel 工作簿 xls
。
当我手动下载文件(使用 Internet Explorer 或 Chrome)时,文件会下载,然后我可以在 Excel 中打开它,没有任何问题。
当我在 R 中使用 download.file
时,文件下载但大小小于正确的下载文件 - 这个文件是 hmtl
文件,有一些说明我的浏览器不受支持。厌倦了不同的模式,没有运气。
我的代码:
download.file(
url = "https://www.atsenergo.ru/nreport?fid=696C3DB7A3F6019EE053AC103C8C8733",
destfile = "C:/MyExcel.xls",
mode = "wb",
method = "auto"
)
使用 RSelenium 库解决此问题。 ATS 站点拒绝任何下载文件的查询(return .hmtl
文件带有 Required javascript enabled 消息),在这种情况下,Selenium 方法仅适用。我的下面的代码(其中 urlList
带有文件下载链接的数据框):
rD <- rsDriver(port = 4444L,
browser = "chrome",
check = FALSE,
geckover = NULL,
iedrver = NULL,
phantomver = NULL)
remDr <- rD$client
for (i in 1:nrow(urlList)) {
tryCatch({
row <- urlList[i,]
remDr$navigate(row$url)
webElem <-
remDr$findElement(using =
'link text', row$FileName)
webElem$clickElement()
},
error = function(e)
logerror(paste(
substr(e, 1, 50),
atsCode,
dateFileName,
sep = "\t"
), logger = loggerName),
finally = next)
}
remDr$close()
# stop the selenium server
rD[["server"]]$stop()
我正在尝试使用 R 的 download.file
函数 (Windows 10, R version 3.4.4 (2018-03-15)
) 下载 Excel 工作簿 xls
。
当我手动下载文件(使用 Internet Explorer 或 Chrome)时,文件会下载,然后我可以在 Excel 中打开它,没有任何问题。
当我在 R 中使用 download.file
时,文件下载但大小小于正确的下载文件 - 这个文件是 hmtl
文件,有一些说明我的浏览器不受支持。厌倦了不同的模式,没有运气。
我的代码:
download.file(
url = "https://www.atsenergo.ru/nreport?fid=696C3DB7A3F6019EE053AC103C8C8733",
destfile = "C:/MyExcel.xls",
mode = "wb",
method = "auto"
)
使用 RSelenium 库解决此问题。 ATS 站点拒绝任何下载文件的查询(return .hmtl
文件带有 Required javascript enabled 消息),在这种情况下,Selenium 方法仅适用。我的下面的代码(其中 urlList
带有文件下载链接的数据框):
rD <- rsDriver(port = 4444L,
browser = "chrome",
check = FALSE,
geckover = NULL,
iedrver = NULL,
phantomver = NULL)
remDr <- rD$client
for (i in 1:nrow(urlList)) {
tryCatch({
row <- urlList[i,]
remDr$navigate(row$url)
webElem <-
remDr$findElement(using =
'link text', row$FileName)
webElem$clickElement()
},
error = function(e)
logerror(paste(
substr(e, 1, 50),
atsCode,
dateFileName,
sep = "\t"
), logger = loggerName),
finally = next)
}
remDr$close()
# stop the selenium server
rD[["server"]]$stop()