Присвоить строку, используемую в качестве ссылки на имя файла, при пакетной загрузке через URL с помощью R - PullRequest
0 голосов
/ 17 июня 2019

Я загружаю файлы xls с этой страницы с циклическим переходом по URL с R:

for(i in 8:56) {
   i1 <- sprintf('%02d', i)
   url <- paste0("https://journals.openedition.org/acrh/29", i1, "?file=1")
   file <- paste0("myExcel_", i, ".xls")
   if (!file.exists(file)) download.file(url, file) 
}

Я хочу назначить строку, используемую в качестве ссылки на каждое загруженное имя файла

Например, я хочу использовать «ds219.xls» в качестве имени файла для https://journals.openedition.org/acrh/2908

<a href="2908?file=1">ds219.xls</a>

1 Ответ

1 голос
/ 17 июня 2019

Имя нужного вам файла находится в заголовке URL. Поэтому попробуйте следующую функцию:

getURLFilename <- function(url){
  require(stringi)
  hdr <-paste(curlGetHeaders(url),collapse = '')
  fname <- as.vector(stri_match(hdr,regex = '(?<=filename=\\").*(?=\\")'))
  fname
}

Для указанного вами URL:

getURLFilename('https://journals.openedition.org/acrh/2908?file=1')
# [1] "ds219.xls"

Тогда в вашем цикле используйте:

file <- getURLFilename(url)
if (!file.exists(file)) download.file(url, file) 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...