【问题标题】:Recover net::ERR_CONNECTION_SET Mechanize Ruby恢复 net::ERR_CONNECTION_SET 机械化 Ruby
【发布时间】:2012-09-28 05:28:45
【问题描述】:

我正在使用 Mechanize for ruby​​ 创建一个网络爬虫。我将一次运行 200k 的批次,我希望能够设置一个站点无效的实例变量,并在 get 请求返回错误时继续下一个站点。例如,我正在抓取一个站点,当一个 http get 请求被触发 Error 101 (net::ERR_CONNECTION_RESET): The connection was reset. 并且我的应用程序崩溃时,该站点返回。

  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 中恢复,或者你们过去使用的方法是什么?

【问题讨论】:

    标签: ruby web-crawler mechanize net-http mechanize-ruby


    【解决方案1】:

    为什么不抓住一切?

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

    【讨论】:

    • 是的,我就是这么做的。我实际上不在乎引发了哪个异常和/或为什么,我只关心无法获取该页面。所以我选择了 Rescue StandardError。
    猜你喜欢
    • 2016-04-17
    • 1970-01-01
    • 2011-01-13
    • 2013-09-07
    • 2012-08-05
    • 1970-01-01
    • 1970-01-01
    • 2012-02-07
    • 1970-01-01
    相关资源
    最近更新 更多