Ошибка Hpricot при разборе специальных символов в URI

Я работаю над сценарием 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" для Dow.

Линия:

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 ответа

Решение

Escape для ^ - это%5E; Вы можете сделать прямую замену в URL.

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

Ну, я не чувствую себя глупым. Еще пять минут, и я получил это работает:

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

Так что если кому-то еще интересно, вот как вы это делаете. Facepalm

Другие вопросы по тегам