2015-12-18 13 views
0

Я создаю скребок с Rselenium и phantomjs. Иногда моя программа, запрашивающая веб-сайт, занимает слишком много времени и никогда не заканчивается. Поэтому я пишу обработчик тайм-аута.Создайте обработчик тайм-аута, используя для обрезки листа с помощью Rselenium

library(RSelenium) 
library(R.utils) 
pJS <- phantom(pjs_cmd ="C:\\software\\phantomjs-2.0.0-windows\\bin\\phantomjs.exe" ) 
UA<-'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:17.0) Gecko/20100101 Firefox/17.0' 
eCap <- list(phantomjs.page.settings.userAgent=UA) 
remDr <- remoteDriver(browserName = "phantomjs", extraCapabilities = eCap) 
remDr$open(silent=T) 

time_out<-0 
tryCatch({withTimeout({ 
     remDr$navigate("http://stackoverflow.com/questions/14399205/in-r-how-to-make-the-variables-inside-a-function-available-to-the-lower-level-f") 
             }, envir=globalenv(),timeout=1.08); 
          }, TimeoutException=function(ex) { 
      time_out<<-1 
}) 

Но я получаю ошибку: Undefined error in RCurl call.Error in queryRD(paste0(serverURL, "/session/", sessionInfo$id, "/url"), :

Во всяком случае, если я пытаюсь заглянуть внутрь remDr ...

remDr$getTitle()[[1]] 
[1] "In R, how to make the variables inside a function available to the lower level function inside this function?(with, attach, environment) - Stack Overflow" 

Так это сработало! Но почему я получаю ошибку?

ответ

0

Обновите JAVA и проверьте версию Selenium, независимо от того, работает ли webdriver с новейшей версией. Это решает вопрос