2012-09-28 136 views
0

我創建了一個使用機械化ruby的網絡爬蟲。我將一次運行200k批次,我希望能夠設置一個實例變量,該站點無效,並在get請求返回錯誤時繼續下一個站點。例如,我正在爬取一個網站,當一個http請求被觸發時,它會返回Error 101 (net::ERR_CONNECTION_RESET): The connection was reset.和我的應用程序崩潰。恢復網:: ERR_CONNECTION_SET機械化紅寶石

def crawl 
    agent = Mechanize.new 
    agent.log = Logger.new('out.log') 
    agent.user_agent_alias = 'Mac Safari' 
    begin 
     page = agent.get(@url) 
    rescue Mechanize::ResponseCodeError => exception 
     if exception.response_code == '400' or exception.response_code == '500' 
     @isActive = false 
     return 
     end 
    end 
    end 

有例外,我應該抓住這樣我就可以從ERR_CONNECTION_RESET恢復或什麼的,你們來做到這一點的方法嗎?

回答

1

爲什麼不抓住一切?

begin 
    page = agent.get(@url) 
rescue 
    @isActive = false 
end 
+0

是的,這就是我所做的。我其實並不在乎引發了哪個異常和/或爲什麼,我只關心那個頁面無法獲取。所以我去了Rescue StandardError。 –