【发布时间】:2011-06-18 21:07:12
【问题描述】:
我很沮丧尝试使用 Ruby 来获取特定的 url 内容。
我尝试了许多不同的方法,例如 open-uri,标准请求到目前为止都没有奏效。 我总是得到空的 html。 我还尝试使用 python 来获取相同的 url,它总是返回正确的 html 内容。我真的不知道为什么...请帮助,因为我是 Ruby 和 Python 的新手... 我想使用 Ruby(更喜欢整洁的语法和人性化的函数名称,更容易使用 gem 和 homebrew 安装库(在 mac 上)而不是 python easy_install) 但我现在正在考虑使用 Python,因为它可以正常工作(但仍然试图解决 2.x 和 3.x 的问题)。我可能正在做一些非常愚蠢的事情,但我认为这不太可能。
ruby 1.9.2p136 (2010-12-25 revision 30365) [i386-darwin10.6.0]
实施 1:
url = URI.parse('http//:www.stackoverflow.com/') req = Net::HTTP::Get.new(url.path)
res = Net::HTTP.start(url.host, url.port) {|http| http.request(req) }
puts res.body #empty
实施 2:
doc = Nokogiri::HTML(open("http//:www.stackoverflow.com/", "User-Agent" => "Safari"))
#empty
#I tried to use without user agent, without Nokogiri none worked.
每次都能完美运行的 Python 实现
f = urllib.urlopen("http//:www.stackoverflow.com/")
# Read from the object, storing the page's contents in 's'.
s = f.read()
f.close()
print s
【问题讨论】:
-
也许你需要跟随重定向?
-
"http:www.url.com" 可能是一个例子,好吧,但是“//”部分发生了什么?无论如何,您应该发布您尝试下载的真实网址,否则没有什么可测试的,只能猜测。
-
你说你的 Python 工作很有趣。我收到一条错误消息,提示存在 http 错误,“未指定主机”。
-
例如 www.yellowpages.com.au/search/listings?clue=plumber&locationClue=Australia
-
非常感谢我用下面给出的代码测试的响应,到目前为止没有一个有效的答案。使用上述 python 代码,如果您将 URL 更新为黄页,它将显示实际的 html。