2013-08-16 34 views
8

Web sayfalarını kazıyarak Nokogiri kullanıyorum. Birkaç url tahmin edilmeli ve yokken 404 hata bulunamadı. Bu istisnayı yakalamanın bir yolu var mı?Nokogiri'de 404 bulunamadı hataları nasıl işlenir

http://yoursite/page/38475 #=> page number 38475 doesn't exist 

Aşağıdaki çalışmayanları denedim.

url = "http://yoursite/page/38475" 
doc = Nokogiri::HTML(open(url)) do 
    begin 
    rescue Exception => e 
     puts "Try again later" 
    end 
end 

cevap

18

Eğer 404 statüsünü bulma durumunda bir hata tutarsa ​​kod parçasını (o open(url) çağrısı) kurtarılmaya değildir, çünkü çalışmıyor. Aşağıdaki kod çalışması gerekir:

url = 'http://yoursite/page/38475' 
begin 
    file = open(url) 
    doc = Nokogiri::HTML(file) do 
    # handle doc 
    end 
rescue OpenURI::HTTPError => e 
    if e.message == '404 Not Found' 
    # handle 404 error 
    else 
    raise e 
    end 
end 

BTW, Exception kurtarılmaya hakkında:? Why is it a bad style to `rescue Exception => e` in Ruby?

+0

ben şey 'e.io.not_found kullanmak daha iyidir' – Calin

İlgili konular