我需要多次阅读网页的内容并从中提取一些我使用正则表达式的信息。我open-uri
用来读取页面的内容,我写的示例代码如下:
require 'open-uri'
def getResults(words)
results = []
words.each do |word|
results.push getAResult(word)
end
results
end
def getAResult(word)
file = open("http://www.somapage.com?option=#{word}")
contents = file.read
file.close
contents.match /some-regex-here/
$1.empty? ? -1 : $1.to_f
end
问题是除非我总是注释掉file.close
换行符。当我在控制台上尝试此代码时,立即返回,但 ruby 进程再运行两到三秒左右。getAResult
-1
getAResult
-1
如果我删除file.close
行getAResult
返回正确的结果,但现在getResults
是一堆-1
s 除了第一个。我尝试使用curb
gem 来阅读页面,但出现了类似的问题。
这似乎是与线程相关的问题。但是,我无法提出合理的搜索并找到相应的解决方案。你认为问题会是什么?
注意:我尝试阅读的这个网页不会很快返回结果。这需要一些时间。