【发布时间】:2014-03-22 18:14:24
【问题描述】:
我想使用 ruby 来检查链接是否失效。
你能告诉我ruby 中的一个工具来检查链接是否在 ruby 中死机?
我可以使用selenium 或nokogiri 吗?
感谢您的帮助!
【问题讨论】:
我想使用 ruby 来检查链接是否失效。
你能告诉我ruby 中的一个工具来检查链接是否在 ruby 中死机?
我可以使用selenium 或nokogiri 吗?
感谢您的帮助!
【问题讨论】:
使用Net::HTTP 发出请求并检查状态码是否为404 就足够了。
例如:
require 'net/http'
uri = URI('link_to_check')
response = Net::HTTP.get_response(uri)
if response.code == '404'
# do something
end
【讨论】:
这是我使用的东西。它执行 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
【讨论】:
lib 或者你只使用文档吗?
show-source 和show-doc 命令,Pry 变得如此简单。