2012-05-14 2 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

기계화 영구 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