Есть ли способ сообщить R или пакет RCurl отказаться от попытки загрузить веб-страницу, если она превышает указанный период времени и перейти на следующую строку кода? Например:Как остановить выполнение RCurl :: getURL(), если он занимает слишком много времени?
> library(RCurl)
> u = "http://photos.prnewswire.com/prnh/20110713/NY34814-b"
> getURL(u, followLocation = TRUE)
> print("next line") # programme does not get this far
Это будет просто висеть на моей системе и не перейти к последней строке.
EDIT: Основываясь на нижеследующем ответе @Richie Cotton, хотя я могу «как-то» достичь того, чего хочу, я не понимаю, почему это занимает больше времени, чем ожидалось. Например, если я делаю следующее, система зависает, пока я не выбрать/отменить выбор «Буферизированный Разное >> Output '» в RGUI:
> system.time(getURL(u, followLocation = TRUE, .opts = list(timeout = 1)))
Error in curlPerform(curl = curl, .opts = opts, .encoding = .encoding) :
Operation timed out after 1000 milliseconds with 0 out of 0 bytes received
Timing stopped at: 0.02 0.08 ***6.76***
РЕШЕНИЕ: на основе @ пост Дункана ниже, а затем впоследствии иметь взгляд на локоны документов, я нашел решение, используя опцию maxredirs следующим образом:
> getURL(u, followLocation = TRUE, .opts = list(timeout = 1, maxredirs = 2, verbose = TRUE))
Спасибо любезно,
Тони Breyal
O/S: Windows 7
R version 2.13.0 (2011-04-13) Platform: x86_64-pc-mingw32/x64 (64-bit)
attached base packages:
[1] stats graphics grDevices utils
datasets methods base
other attached packages:
[1] RCurl_1.6-4.1 bitops_1.0-4.1
loaded via a namespace (and not attached):
[1] tools_2.13.0
Приветствия дружище, что лучше, но я до сих пор не совсем получить то, что мне нужно (см редактировать в Q) –
Я послал по электронной почте пакет сопровождающего, чтобы дать ему знать об этой проблеме. –