R ошибок в цикле: файл (con, "r") и open.connection(con, "rb")
Я загружаю серию URL, которые являются файлами JSON, в список списка, который будет проанализирован позже.
baseurl <- "http://zoeken.kvk.nl/Address.ashx?site=handelsregister&partialfields=&q=010"
pages <- list()
for(i in 1:99999){
if(i < 10000){
message("ignoring page ", i)
}
if(i >= 10000){
message("Retrieving page ", i)
mydata <- RJSONIO::fromJSON(paste0(baseurl,i), flatten=TRUE)
pages[[i+1]] <- mydata$resultatenHR
# adding adjustment 1
options(timeout = 4000000)
# adding adjustment 2
if(i %% 100 == 0){Sys.sleep(2)}
if(i %% 1000 == 0){Sys.sleep(10)}
}
}
Тем не менее, в непопулярные моменты я получаю либо код ошибки:
error in open.connection(con, "rb") : Recv failure: Connection was reset.
или же
Error in file(con, "r") : cannot open the connection
Сначала я попробовал вышеупомянутую настройку 1, а затем настройку 2, но проблема продолжает возникать. Если я попытаюсь перезапустить цикл в точке ошибки, он снова будет работать до следующей нерегулярной ошибки.
Как я могу сделать так, чтобы R автоматически перезапускал цикл в точке ошибки?
NB. Я видел другие темы об ошибках в open.connection, но я не понимал данных ответов, или это не относится к моему типу кода, я думаю...
NB2: я также пытался использовать jsonlite
пакет вместо RJSONIO
, но это дало те же ошибки в нерегулярные моменты. Спасибо за ваш вклад.
1 ответ
У меня почти точно такая же проблема. Это происходит, особенно когда я пытаюсь загрузить большие наборы данных. Я получаю сообщение об ошибке такого типа: "Ошибка в open.connection(con, "rb"): Ошибка отправки: соединение было сброшено"
final_results <- list()
while(i < number){
query <- paste0(url_start, i)
json_result <- fromJSON(query)
final_results[[i]] <- as.data.frame(json_result$records)
i <- i+1
}
У кого-нибудь есть идеи, что я здесь делаю не так?