2

我正在执行一项任务,使用雅虎的股票价格系统从网上检索几个股票价格。不幸的是,我需要使用的Yahoo API返回一个 .csv 文件,该文件显然包含该股票交易的每一天的一行,这对于我正在使用的股票来说至少有 5000 行,超过 10其中一些有千行(例如)。

不过,我只关心当前价格,它位于第二行。

我目前正在这样做:

require 'open-uri'
def get_ticker_price(stock)
   open("http://ichart.finance.yahoo.com/table.csv?s=#{stock}") do |io|
      io.read.split(',')[10].to_f
   end
end

......但它真的很慢。

  1. 是所有延迟都来自获取文件,还是我处理它的方式有一些延迟?正在io.read读取整个文件吗?

  2. 有没有办法只下载 Yahoo CSV 文件的前几行?

  3. 如果问题 1 和 2 的答案没有使这个问题变得无关紧要,是否有更好的方法来处理它而不需要查看整个文件(假设这io.read是在做什么)?

4

1 回答 1

3

通过使用日期范围参数,您可以使用查询字符串参数将数据减少到当前日期。

例如 2012 年 7 月 13 日的 MO:(开始/结束月份以零索引开始,{ 00 - 11 } )。

http://ichart.finance.yahoo.com/table.csv?s=MO&a=06&b=13&c=2012&d=6&e=13&f=2012&g=d

api description here: http://etraderzone.com/free-scripts/47-historical-quotes-yahoo.html

于 2012-07-16T03:55:59.013 回答