2012-05-08 21 views
1
require 'net/http' 
1.upto(99) do |novel| 
    puts "Downloading ##{novel}..." 
    Net::HTTP.start("http://www.nbc.com") do |http| 
     resp = http.get("/heroes/novels/downloads/Heroes_novel_0#{novel}.pdf") 
     open("Heroes_novel_#{novel}.pdf", "w") do |file| 
     file.write(resp.body) 
     end 
    end 
    puts "Next..." 
    puts 
end 
puts "Okay, Sneak it's done!" 

當我運行我的腳本,我得到這些錯誤:下載列表 - 網/ HTTP

C:/Ruby192/lib/ruby/1.9.1/net/http.rb: 644:在initialize': getaddrinfo: No such host is known. (SocketError) from C:/Ruby192/lib/ruby/1.9.1/net/http.rb:644:in中打開來自C:/Ruby192/lib/ruby/1.9.1/net/http.rb:644的' :來自C:/Ruby192/lib/ruby/1.9.1/timeout的block in connect' from C:/Ruby192/lib/ruby/1.9.1/timeout.rb:44:in超時' 。 rb:89:在timeout' from C:/Ruby192/lib/ruby/1.9.1/net/http.rb:644:in連接來自C:/Ruby192/lib/ruby/1.9.1/net/http.rb:637的' :在do_start' from C:/Ruby192/lib/ruby/1.9.1/net/http.rb:626:in從C:/Ruby192/lib/ruby/1.9.1/開始' net/http.rb:490:start' from heroes.rb:5:in塊中的' 從heroes.rb:3:upto' from heroes.rb:3:in'

回答

4

你需要合適的參數解析成start()。它需要一個主機和一個端口。最簡單的方法是首先創建一個URI對象。

uri = URI('http://www.nbc.com') 
Net::HTTP.start(uri.host, uri.port) do |http| 
    #do some get requests and handle it 
end 

這相當於Net::HTTP.start("www.nbc.com", 80)