2014-02-21 41 views
0

我想使用ruby檢查鏈接是否死亡。 你能告訴我一個工具在ruby檢查鏈接在紅寶石死亡? 我可以使用seleniumnokogiri? 感謝您的幫助!工具檢查鏈接在ruby中死亡

+1

看到這個例子 - http://ruby-doc.org/stdlib-2.1.0/libdoc/net/http/rdoc/Net/HTTP.html#class-Net::HTTP-label-Response + Data和http://ruby-doc.org/stdlib-2.1.0/libdoc/net/http/rdoc/Net/HTTP.html#class-Net::HTTP-label-HTTP+Response+Classes –

回答

1

應該足以使請求與Net::HTTP,並檢查狀態代碼是404

例如:

require 'net/http' 
uri = URI('link_to_check') 
response = Net::HTTP.get_response(uri) 
if response.code == '404' 
    # do something 
end 
+0

只需添加一個例子.. +1 –

+0

非常感謝...! –

1

下面是我使用的東西。它執行HEAD而不是GET請求,並且會正確地遵循重定向。它還使用通用的Net::HTTPSuccess來檢查請求是否成功。

require 'net/http' 

def alive?(link, limit=10) 
    return false if limit <= 0 

    link = "http://#{link}" unless link =~ %r{^https?://}i 
    uri = URI.parse(link) 

    http = Net::HTTP.new(uri.host, uri.port) 
    req = Net::HTTP::Head.new(uri.request_uri) 
    res = http.request(req) 

    case res 
    when Net::HTTPSuccess then true 
    when Net::HTTPRedirection then alive?(res['location'], limit-1) 
    else false 
    end 
rescue SocketError 
    false # unknown hostname 
end 
+0

你知道任何一本書來學習這個''lib'或者你只使用文檔嗎? –

+0

@ArupRakshit我剛剛閱讀文檔,博客文章,如[這一個](http://www.rubyinside.com/nethttp-cheat-sheet-2940.html),如果有疑問,我看看源代碼。 Pry使用'show-source'和'show-doc'命令可以輕鬆實現。 –

+0

好的。感謝您的回覆。 –