【问题标题】:Tool check link died in ruby [closed]工具检查链接在红宝石中死了[关闭]
【发布时间】:2014-03-22 18:14:24
【问题描述】:

我想使用 ruby​​ 来检查链接是否失效。 你能告诉我ruby 中的一个工具来检查链接是否在 ruby​​ 中死机? 我可以使用seleniumnokogiri 吗? 感谢您的帮助!

【问题讨论】:

标签: ruby selenium nokogiri


【解决方案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

【讨论】:

  • 只需添加一个示例.. +1
【解决方案2】:

这是我使用的东西。它执行 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 或者你只使用文档吗?
  • @ArupRakshit 我刚刚阅读了文档、this one 之类的博客文章,如果有疑问,我会查看源代码。使用show-sourceshow-doc 命令,Pry 变得如此简单。
  • 好的。感谢您的回复。
猜你喜欢
  • 2013-01-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-09-09
  • 2013-09-01
  • 1970-01-01
  • 2010-12-14
相关资源
最近更新 更多