Ошибка 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.
Ну, я не чувствую себя глупым. Еще пять минут, и я получил это работает:
doc = Hpricot(open(URI.encode("http://finance.yahoo.com/q/hp?s=#{ticker_symbol}")))
Так что если кому-то еще интересно, вот как вы это делаете. Facepalm