1

我正在编写一个 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 库确实如此)。有没有办法逃脱那个角色或强迫图书馆尝试它?

4

2 回答 2

4

好吧,我不觉得很愚蠢。再过五分钟,我得到了这个工作:

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

因此,如果其他人想知道,那就是您的做法。掌心

于 2010-02-06T23:49:37.667 回答
2

^ 的转义为 %5E;您可以对 URL 进行直接替换。

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

于 2010-02-06T23:48:03.397 回答