2016-09-08 2 views
0

최근 웹 크롤링을 배웁니다.r 웹 크롤링을위한 영원한 루프 수행을위한 trycatch Q

웹 크롤링 기능이 영원히 작동하도록하려면 While (TRUE)를 사용합니다.

그러나 내 인터넷이 안정적이지 않아 내 인터넷이 실패 할 때 오류가 표시되는 경우가 있습니다.

나는 그것을 밖으로 trycatch 기능

RF() 크롤링 웹의 제 기능은을 사용 내기 위해 노력했다.

if(tryCatch(rf(), error=function(cond) FALSE)==FALSE){ 
    Sys.sleep(60+sample(1:5,1)) 
    rf() 
} 

잠시 후에 인터넷이 정상적으로 작동하므로 R을 잠시 후에 실행하도록 요청합니다.

그러나이 코드는 인터넷이 두 번째 실패한 다음 R이 중지되면 충분하지 않습니다.

만약 내가 반복을 사용한다면 더 좋을 것이라고 생각합니다.

맞습니까? 당신이 요청이 실패 할 경우이 코드를 시도, 더 긴 시간을 기다려야합니다

repeat { 
if(tryCatch(rf(), error=function(cond) FALSE)==FALSE){ 
    Sys.sleep(60+sample(1:5,1)) 
    rf() 
} 
Sys.sleep(900+sample(1:30,1))#second 
} 

답변

1

함수 while(TRUE)

처럼
e <- simpleError("test error") 
while(T){ 
    try(stop(e)) 
    Sys.sleep(2) 
    print(1) 

} 

간단한 try 수 있지만 시도 할 수 있습니다 :

while(TRUE) { 
    tryCatch({ 
    rf() 
    print("wait normal") 
    Sys.sleep(60+sample(1:5,1)) 
    }, error = function(e) { 
    print("wait longer") 
    Sys.sleep(900+sample(1:30,1)) 
    } 
) 
} 

rf() 함수는 오류가 catch되어 더 이상 발생하지 않도록 try 문에 있어야합니다.

관련 문제