2012-03-10 4 views
0

저는 Mechanize와 Nokogiri를 사용하여 여러 개의 루비 스크래퍼를 작성했습니다. 예를 들어 여기 (그러나이 요청에서는 특정 숫자 (약 14000)를 요청한 후 연결 시간 초과 오류가 발생하는 것 같습니다.Ruby Mechanize Connection이 (가) 시간 초과되었습니다.

/var/lib/gems/1.8/gems /net-http-persistent-2.5.1/lib/net/http/persistent/ssl_reuse.rb:90:in`초기화 ': 연결 시간 초과 - connect (2) (Errno :: ETIMEDOUT)

나는 가지고있다. 온라인으로 많이 인터넷 검색을 할 수 있지만 가장 좋은 답변은 서버에 너무 많은 요청을하고 있다는 것입니다. 조절 또는 다른 방법으로 문제를 해결할 수있는 방법이 있습니까?

+0

조절에 관한이 스레드보기 : http://stackoverflow.com/questions/9241625/regulating-rate-limiting-ruby-mechanize 지속적인 HTTP 연결을 사용하지 않는 버전 1.0으로의 복귀를 고려하십시오. – pguardiario

+0

Mechanize 용 버전 1.0 또는 Nokogiri? – ZenBalance

+0

mechanize, sorry – pguardiario

답변

0

프로그래밍 경험을 한 번 더 깨닫고 그게 내 부분에 간단한 오류 : 내 코드는 오류를 잡지 않았어 링크가 손상되면 적절하게 다음 링크로 이동합니다. 비슷한 문제가 발생할 수있는 초보자 루비 프로그래머를위한

:

연결이 오류가 폐기되고 인해 페이지에 잘못된 링크 등으로 일반적으로 시간이 초과되었습니다. 당신이 링크를 통해 반복하고 각 링크에서 정보를 추출한다 루프를 경우

당신은, 예를 들면 아래

begin 
    #[1 your scraping code here ] 
rescue 
    #[2 code to move to the next link/page/etc. that you are scraping instead of sticking to the invalid one] 
end 

예를 들어 같은 문에서 링크를 액세스하는 코드를 포장 할 필요가 [1]에 있어야하고 다음 링크로 이동하는 코드 ([next]와 같은 것을 사용하는 것을 고려해야합니다)는 [2]에 있어야합니다. 또한 콘솔에 무언가를 인쇄하여 링크가 유효하지 않다는 것을 사용자에게 알릴 수도 있습니다.

관련 문제