2010-02-06 49 views
1

我正在研究一个ruby脚本,以从Yahoo获取历史股票价格,使用Hpricot来解析页面。这主要是简单明了:URL为“http://finance.yahoo.com/q/hp?s=TickerSymbol”例如,要查找谷歌,我会用“http://finance.yahoo.com/q/hp?s=GOOGHpricot错误分析URI中的特殊字符

不幸的是,它打破了,当我仰视的指数价格。指数的前缀为脱字号,例如道琼斯指数“http://finance.yahoo.com/q/hp?s=^DJI”。

行:

ticker_symbol = '^DJI' 
doc = Hpricot(open("http://finance.yahoo.com/q/hp?s=#{ticker_symbol}")) 

抛出此异常:

bad URI(is not URI?): http://finance.yahoo.com/q/hp?s=^DJI 

角度来说,Hpricot上插入符号(我想是因为底层的Ruby URI库做)扼流圈。有没有办法逃避那个角色或迫使图书馆去尝试?

回答

4

好了,不要觉得愚蠢。五分钟,我得到了这个工作:

doc = Hpricot(open(URI.encode("http://finance.yahoo.com/q/hp?s=#{ticker_symbol}"))) 

所以如果有人想知道,那就是你怎么做。 facepalm