"Parseando" XML con Hpricot

Planeta Linux Shop fué mi primera incursión en la creación de un "mercado espejo", o sea, un sitio que replica los ítems subastados en el popularísimo MercadoLibre usando el feed XML ofrecido por éste último. También fué mi primera incursión procesando una enorme cantidad de XML en un lenguaje al que recién llegaba: Ruby.

El "parseo" del XML lo realicé usando el todopoderosísimo REXML y también su módulo StreamListener, una primera elección lógica, conservadora y "según el manual", pero una tarea casi tan engorrosa como en cualquier otro lenguaje.

Entra Hpricot...

...y el procesamiento de XML se convirtió en algo divertido.

Hpricot es "un rápido, disfrutable parser HTML para Ruby" lo suficientemente flexible como para usarse en toda una variedad de cosas, desde el scraping (más sobre esto pronto) hasta el procesamiento de archivos XML.

Hpricot se usa expresiones en XPath (XML Path Language) para hacer su trabajo, lo que hace que la interpretación de archivos XML sea notablemente más expresiva y breve que en REXML. Además, Hpricot está programado en C, lo que lo hace más rápido (algunas veces mucho más rápido) que éste último.

En resumen, un gran reemplazo para la principal tarea de Planeta Linux Shop y una contundente adición al arsenal de cualquier programador Ruby.

Posteriormente, moví el trabajo bruto del nuevo "parseo" XML con Hpricot a una tarea Rake disparada de manera programada desde el Cron, como expliqué en una entrada anterior. Esto se realizaba antes con una serie de scripts que cargaban ActiveRecord y luego los modelos de la aplicación Ruby on Rails para insertarles el resultado del procesamiento con REXML, una forma mucho menos eficiente de hacer las cosas...

Pueden ver todo esto en funcionamiento en PlanetaLinuxShop.com.ar.

 

RSS Blog