Как сгенерировать функцию для загрузки CSV-файлов с Dynami c URL в R - PullRequest
2 голосов
/ 16 марта 2020

Я создаю функцию для загрузки группы базы данных CSV с веб-страницы «щелкни и скачай». Это работало замечательно:

mydownloadBCA <- function(start_date, end_date) {
  start_date <- as.Date(start_date)
  end_date <- as.Date(end_date)
  dates <- as.Date("1970-01-01") + (start_date : end_date)
  for(i in 1:length(dates)){
    string_date <- as.character(dates[i])
    myfile <- paste0("./BCA/BCA", string_date, ".csv")
    myurl <- paste("https://www.cenace.gob.mx/DocsMEM/OpeMdo/CantidAsig/MDA/ImportacionExportacion/Resultados_ImpExp%20BCA%20MDA%20Dia%20", string_date, "%20v2017%2003%2022_09%2033%2019.csv", sep = "")
    download.file(url = myurl, destfile = myfile, quiet = TRUE)
  }
  }

Для первого «чанка» URL меняется только с учетом даты:

[2016-01-29] https://www.cenace.gob.mx/DocsMEM/OpeMdo/CantidAsig/MDA/ImportacionExportacion/Resultados_ImpExp%20SIN%20MDA%20Dia%20 2016-01-29 % 20v2017% 2003% 2022_10% 2033% 2019.csv

[2016-10-31] https://www.cenace.gob.mx/DocsMEM/OpeMdo/CantidAsig/MDA/ImportacionExportacion/Resultados_ImpExp%20SIN%20MDA%20Dia%20 2016- 10-31 % 20v2017% 2003% 2022_10% 2033% 2019.csv

Впоследствии веб-страница обновлялась ежедневно, создавая изменяемый URL без шаблона.

После 2017 года -03-30 URL-адрес не только изменился в качестве as.Date, но и числовым нелогичным образом. Проблема в последней части "% XXXX% XXXX_XX% XXXX% XXXX.csv"

, например:

<<url>> = https://www.cenace.gob.mx/DocsMEM/OpeMdo/CantidAsig/MDA/ImportacionExportacion/Resultados_ImpExp%20BCA%20MDA

2017-03-30  <<url>>%20Dia%202017-03-30%20v2017%2003%2029_13%2029%2051.csv
2017-04-01  <<url>>%20Dia%202017-04-01%20v2017%2003%2031_13%2044%2042.csv
2017-04-02  <<url>>%20Dia%202017-04-02%20v2017%2004%2001_12%2057%2041.csv
##  Problems here                                   ^^^^^^^^^^^^^^^^^^^^^^

Я пытался объяснить это с помощью oop, но пока он не работает:

mydownloadSIN <- function(start_date, end_date) {
  start_date <- as.Date(start_date)
  end_date <- as.Date(end_date)
  dates <- as.Date("1970-01-01") + (start_date : end_date)
  f <- factor(0:9)
  number <- as.numeric(f)
  for(i in 1:length(dates)){
    for(j in 0:length(number)){
    string_date <- as.character(dates[i])
    X <- as.character(number[j])
    myfile <- paste0("./SIN/SIN", string_date, ".csv")
    myurl <- paste("https://www.cenace.gob.mx/DocsMEM/OpeMdo/CantidAsig/MDA/ImportacionExportacion/Resultados_ImpExp%20SIN%20MDA%20Dia%20",string_date,"%20v2017%",X,X,X,X,"%",X,X,X,X,"_",X,X,"%",X,X,X,X,"%",X,X,X,X,".csv", sep = "")
    download.file(url = myurl, destfile = myfile, quiet = TRUE)
    }
  }
  }

При попытке использовать функцию я получаю следующую ошибку:

Ошибка в download.file (url = myurl , destfile = myfile, quiet = TRUE): невозможно открыть URL-адрес 'https://www.cenace.gob.mx/DocsMEM/OpeMdo/CantidAsig/MDA/ImportacionExportacion/Resultados_ImpExp%20SIN%20MDA%20Dia%202017-03-24%20v2017%%_%%.csv' Дополнительно: предупреждающее сообщение: в файле download.file (url = myurl, destfile = myfile, quiet = TRUE): невозможно открыть URL 'https://www.cenace.gob.mx/DocsMEM/OpeMdo/CantidAsig/MDA/ImportacionExportacion/Resultados_ImpExp%20SIN%20MDA%20Dia%202017-03-24%20v2017%%_%%.csv': статус HTTP был «400 Bad Request»

Это «общая» веб-страница, где пользователь выбирает нужные ему годы и затем нажимает на Архив CSV: https://www.cenace.gob.mx/SIM/VISTA/REPORTES/H_RepCantAsignadas.aspx?N=135&opc=divCssCantAsig&site=Cantidades%20asignadas / MDA / De% 20Importación% 20y% 20Exportación & tipoArch = C & tipoUni = BCN & tipo = De% 20Importación% 20y% 20Exportación & nombrenodop = MDA * 1047 это изменение в URL для моей функции?

Спасибо

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