Я создаю функцию для загрузки группы базы данных 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 для моей функции?
Спасибо