2010-02-06 31 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