我正在尝试从维基百科下载页面。对于这样的任务,我使用的是宝石。使用 net / http 时,我得到的只是一个空字符串。所以我尝试使用 open-uri ,它运行正常。
然而,我更喜欢第一种选择,因为它给了我更明确的控制;但为什么它会返回一个空字符串?
class Downloader
attr_accessor :entry, :url, :page
def initialize
# require 'net/http'
require 'open-uri'
end
def getEntry
print "Article name? "
@entry = gets.chomp
end
def getURL(entry)
if entry.include?(" ")
@url = "http://en.wikipedia.org/wiki/" + entry.gsub!(/\s/, "_")
else
@url = "http://en.wikipedia.org/wiki/" + entry
end
@url.downcase!
end
def getPage(url)
=begin THIS FAULTY SOLUTION RETURNS AN EMPTY STRING ???
connector = URI.parse(url)
connection = Net::HTTP.start(connector.host, connector.port) do |http|
http.get(connector.path)
end
puts "Body:"
@page = connection.body
=end
@page = open(url).read
end
end
test = Downloader.new
test.getEntry
test.getURL(test.entry)
test.getPage(test.url)
puts test.page
P.S。:我是一名自学成才的程序员,因此代码可能不符合良好做法。道歉。