2012-05-14 8 views
1
http = Net::HTTP.new("hostname", 80) 
http.open_timeout = 300 
http.read_timeout = 300 

pagereq = lambda { 
    http.request(Net::HTTP::Get.new(page, {"User-Agent" => "Mozilla/5.0"})).body } 

some_conditions.to_a.each do |n| 

    page = "startpage"+n.to_s 

    pagereq.call.scan(/criteria1/).each do |m| 
     page = "/"+m.to_s 
     puts pagereq.call.scan(/criteria2/) 
    end 

end 

私はこのテンプレートを使用して、サイトからリンクなどを収集しています。それは各接続でDNS解決を生成し、これは良くありません。ルビー複数接続とDNSクエリ

私が興味を持ったのは、ホスト名を一度解決し、接続し、すべての操作を行い、接続を閉じます。

答えて

0

Mechanizeのは、永続的なHTTP connnectionsを使用し、それが簡単にリンクを取得することができます:

require 'mechanize' 
@agent = Mechanize.new 
@agent.user_agent = 'Mozilla/5.0' 
page = @agent.get 'http://www.google.com/' 
puts page.links.map &:href 
+0

おかげで、私はこのライブラリを試してみましょう。 それでもなお、純粋なNet :: HTTPを最適化することは重要です。 – Jeff

関連する問題