`walk` для загрузки файла и сохранения URL ссылки в качестве имени файла - PullRequest
1 голос
/ 08 марта 2019

Я пытаюсь извлечь некоторую информацию из нескольких ссылок.

Я применяю следующую функцию:

walk(filinginfohref, function(x) {
  download.file(x, destfile = paste0("D:/deleteme/",x), quiet = FALSE)
})

Однако возвращается следующая ошибка:

 Error in download.file(x, destfile = paste0("D:/deleteme/", x), quiet = FALSE) : 
  cannot open destfile 'D:/deleteme/https://www.sec.gov/Archives/edgar/data/1750/000104746918004978/0001047469-18-004978-index.htm', reason 'Invalid argument' 

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

Мне нужно как-то сохранить ссылку, откуда файл загружается с

Как мне решить эту проблему?

Данные

filinginfohref <- c("https://www.sec.gov/Archives/edgar/data/1750/000104746918004978/0001047469-18-004978-index.htm", 
"https://www.sec.gov/Archives/edgar/data/1750/000104746917004528/0001047469-17-004528-index.htm", 
"https://www.sec.gov/Archives/edgar/data/1750/000104746916014299/0001047469-16-014299-index.htm", 
"https://www.sec.gov/Archives/edgar/data/1750/000104746915006136/0001047469-15-006136-index.htm", 
"https://www.sec.gov/Archives/edgar/data/1750/000104746914006243/0001047469-14-006243-index.htm", 
"https://www.sec.gov/Archives/edgar/data/1750/000104746913007797/0001047469-13-007797-index.htm", 
"https://www.sec.gov/Archives/edgar/data/1750/000104746912007300/0001047469-12-007300-index.htm", 
"https://www.sec.gov/Archives/edgar/data/1750/000104746911006302/0001047469-11-006302-index.htm", 
"https://www.sec.gov/Archives/edgar/data/1750/000104746910006500/0001047469-10-006500-index.htm", 
"https://www.sec.gov/Archives/edgar/data/1750/000104746909006783/0001047469-09-006783-index.htm"
)

Ответы [ 2 ]

1 голос
/ 08 марта 2019

Как вы уже поняли, окна не позволяют вам сохранять эти файлы имен со специальными символами. Добавьте функцию, чтобы удалить общую часть имени файла и избавиться от них "/".

library(purrr)

htmName <- function (x) {
    x <- gsub("https://www.sec.gov/Archives/edgar/data/", "",x)
    x <- gsub("/","_",x)
    return(x)
}

walk(filinginfohref, function(x) {
    download.file(x, destfile = paste0("output/", htmName(x)), quiet = FALSE)
})
1 голос
/ 08 марта 2019

Каждая ссылка / интерпретируется как папка. Построенный путь не существует.

Пожалуйста, замените destfile = paste0("D:/deleteme/",x) на destfile = paste0("D:/deleteme/", gsub("/", "_", x, fixed = TRUE))

Таким образом, у вас есть персонаж _, избегающий неприятностей.

Возможно, есть способ сохранить ссылки в контактах.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...