【问题标题】:Ruby Mechanize Connection timed outRuby 机械化连接超时
【发布时间】:2012-03-10 05:49:50
【问题描述】:

我一直在练习使用 Mechanize 和 Nokogiri 编写一些 Ruby 爬虫。例如这里(但是,似乎在发出一定数量的请求(在这种情况下约为 14000)后,我收到一条错误消息,说我有一个连接超时错误:

/var/lib/gems/1.8/gems/net-http-persistent-2.5.1/lib/net/http/persistent/ssl_reuse.rb:90:in `initialize': 连接超时-connect(2 ) (Errno::ETIMEDOUT)

我在网上搜索了很多,但我能得到的最佳答案是我向服务器发出了太多请求。有没有办法通过限制或其他方法来解决这个问题?

【问题讨论】:

标签: ruby connection mechanize out timed


【解决方案1】:

在更多的编程经验之后,我意识到这是我的一个简单错误:我的代码没有捕捉到抛出的错误,并在链接损坏时适当地移动到下一个链接。

对于遇到类似问题的任何 Ruby 新手程序员:

连接超时错误通常是由于被报废页面上的无效链接等造成的。

您需要将访问链接的代码包装在如下语句中

begin 
     #[1 your scraping code here ] 
rescue
     #[2 code to move to the next link/page/etc. that you are scraping instead of sticking to the invalid one] 
end

例如,如果你有一个循环遍历链接并从每个链接中提取信息,那么它应该在 [1] 和代码移动到下一个链接(考虑使用类似 ruby​​ “next”的东西)应放置在 [2] 处。您也可以考虑在控制台打印一些内容,让用户知道链接无效。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-02
    • 1970-01-01
    • 2011-01-13
    • 2013-09-07
    • 2012-08-05
    相关资源
    最近更新 更多