解析URI中的特殊字符时出现Hpricot错误

时间:2010-02-06 23:42:57

标签: ruby uri hpricot

我正在研究一个ruby脚本,以便从雅虎获取历史股票价格,使用Hpricot来解析页面。这主要是直截了当的:网址是“http://finance.yahoo.com/q/hp?s= TickerSymbol ”例如,要查找Google,我会使用“http://finance.yahoo.com/q/hp?s=GOOG

不幸的是,当我查看索引的价格时会崩溃。索引以插入符号为前缀,例如道指的“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库)。有没有办法逃脱该角色或强迫图书馆尝试?

2 个答案:

答案 0 :(得分:4)

嗯,我不觉得愚蠢。再过五分钟,我就开始工作了:

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

所以,如果有人想知道,你就是这样做的。 捂脸

答案 1 :(得分:2)

^的转义是%5E;你可以在网址上直接替换。

http://finance.yahoo.com/q/hp?s=%5EDJI