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解決を生成しますが、これは適切ではありません。

私が興味を持っていること。ホスト名を一度解決し、接続を確立し、すべての操作を実行し、接続を閉じます。

4

1 に答える 1

0

Mechanize は永続的な http 接続を使用して、リンクを簡単に取得できるようにします。

require 'mechanize'
@agent = Mechanize.new
@agent.user_agent = 'Mozilla/5.0'
page = @agent.get 'http://www.google.com/'
puts page.links.map &:href
于 2012-05-14T00:43:41.667 に答える