r - как отменить цикл без потери данных - PullRequest
0 голосов
/ 16 мая 2018

Я соскребаю сайт. После тысяч итераций сервер вышел из строя, система зависла, и я получил следующую ошибку:

Error in curl::curl(path) : all connections are in use

Есть ли способ выхода из цикла без потери данных, которые я до сих пор просматривал, что стоит одну неделю загрузки?

library(rvest)
url <- paste("http://www.example.com",(1:130000))
GNR <- lapply(url,function(i) {
  Sys.sleep(2)
  try(list(html_text(html_nodes(read_html(i), "h7")),
       html_text(html_nodes(read_html(i), "#MainContent_IndividualUC_lblBirth"))
  ))
})

(Извините, что не предоставил воспроизводимый пример; если бы я знал, как воссоздать ошибку, я бы не стал публиковать вопрос!)

1 Ответ

0 голосов
/ 16 мая 2018

Не могли бы вы записать очищенные данные в файл и добавлять к нему каждый раз, когда получаете новые данные?

url <- paste("http://www.example.com",(1:130000))
GNR <- lapply(url,function(i) {
  Sys.sleep(2)
  scrapedTmp <- try(list(html_text(html_nodes(read_html(i), "h7")),
           html_text(html_nodes(read_html(i), "#MainContent_IndividualUC_lblBirth"))
  ))
  write(unlist(scrapedTmp), file="path_to-text-file", append=TRUE)
})
...