Я работаю над сценарием ruby для получения исторических цен акций от Yahoo, используя Hpricot для анализа страниц. В основном это просто: URL-адрес "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 делает). Есть ли способ убежать от этого персонажа или заставить библиотеку попробовать его?
Ну, разве я не чувствую себя глупым? Еще пять минут, и я заработал:
doc = Hpricot(open(URI.encode("http://finance.yahoo.com/q/hp?s=#{ticker_symbol}")))
Так что, если кому-то еще интересно, вот как вы это делаете. Facepalm
Выход для ^ равен% 5E; Вы можете сделать прямую замену в URL.
http://finance.yahoo.com/q/hp?s=%5EDJI