使用Ruby--I';我有麻烦了

使用Ruby--I';我有麻烦了,ruby,Ruby,我想从这个*页面上删除内容。我查找的所有内容都提供了解析CSS元素的解决方案;但是,那一页没有 下面是我发现的唯一一个看起来应该可以工作的代码: file = File.open('http://hiscore.runescape.com/index_lite.ws?player=zezima', "r") contents = file.read puts contents 错误: tracker.rb:1:in 'initialize': Invalid argument - http:/

我想从这个*页面上删除内容。我查找的所有内容都提供了解析CSS元素的解决方案;但是,那一页没有

下面是我发现的唯一一个看起来应该可以工作的代码:

file = File.open('http://hiscore.runescape.com/index_lite.ws?player=zezima', "r")
contents = file.read
puts contents
错误:

tracker.rb:1:in 'initialize': Invalid argument - http://hiscore.runescape.com/index_lite.ws?player=zezima (Errno::EINVAL)
  from tracker.rb:1:in 'open'
  from tracker.rb:1
*
http://hiscore.runescape.com/index_lite.ws?player=zezima


如果您试图在帖子中将其格式化为链接,由于某种原因,它无法识别URL中的下划线(u)。

获取网站内容的适当方法是通过Ruby中的NET::HTTP模块:

require 'uri'
require 'net/http'
url = "http://hiscore.runescape.com/index_lite.ws?player=zezima"
r = Net::HTTP.get_response(URI.parse(url).host, URI.parse(url).path)
File.open()不支持URI

最美好的祝愿,

Fabian

您确实希望使用内核类提供的open(),它可以从URI读取您只需要首先使用OpenURI库:

require 'open-uri'
这样使用:

require 'open-uri'
file = open('http://hiscore.runescape.com/index_lite.ws?player=zezima')
contents = file.read
puts contents
此相关SO线程包含相同的问题:


请使用open uri,它支持uri和本地文件

require 'open-uri'
contents  = open('http://www.google.com') {|f| f.read }

我明白了,我不知道。尽管如此,根据他想对这些内容做些什么,他可能会更好地使用net/http.Oo,这甚至更好。谢谢。@halfdan-完全同意net/http总体上更好。我不依赖这种方法进行任何非琐碎的生产。net/http有它的缺点,我通常更喜欢curl绑定(lib)。这篇文章提供了有关http客户端性能的良好信息-抑制非常好,因为您对超时有更细粒度的控制,这在大批量生产使用中非常关键。如果我们想关闭文件,是否需要使用此语法“source=open(“”,&:read)”呢?有人在其他地方这样说的文件。只读不会关闭该文件吗?如果你不介意的话,请考虑一下我们的问题:。你不必使用那种语法,但你可以,这将省去阅读的第二行。实际上也是一样,第二个参数只是将一个块传递给open()调用,该块在打开成功后执行,从而运行该块(读取
并返回该结果)。6或1/2一打