вторник, 1 июля 2008 г.

Ruby: hpricot error

Если у вас стоит задача распарсить / изменить какой то html, и вы пишете на ruby то на мой взгляд идеальный вариант - использование небольшой и быстрой библиотеки hpricot. Она написана на С поэтому работает довольно быстро (быстрее чем другие парсилки).

Hpricot позволяет анализировать и редактировать html с помощью css селекторов или xpath селекторов. Вобщем очень удобно и просто.

Инструкция для установки.

Но у hpricot есть небольшие проблемки, например иногда при создании документа:
require 'hpricot'
doc = Hpricot "some html"

возникает ошибка
ArgumentError. negative string size (or size too big).

Оказывается бывает такое из-за каких-то последовательностей символов в html. Эти ошбки постепенно фиксятся разработчиками, но буквально сегодня у меня она возникала, парсер падал из-за того, что в html была последовательность символов "\r\n". Так как мне эти символы совсем не нужны я их просто вырезаю.
html.gsub!("\r\n", "")
doc = Hpricot html