Daily Archives for Lunes, diciembre 2008

Ruby HTML/XML Parsers

Un parser es una biblioteca que se utiliza para recorrer el código de un fichero html o xml analizando sus etiquetas y procesando estas de alguna forma.

 

Un uso típico sería para eliminar contenido html peligroso como pueden ser scripts, objetos activeX u otros elementos que queremos quitar.

 

He estado analizando estas herramientas últimamente y os comento dos que he estado utilizando.

 

1) hpricot : Esta es la libreria por excelencia que tiene un uso muy sencillo. Es tan sencillo como hacer.

require ‘hpricot’

require ‘open-uri’

doc = Hpricot(open(“http://www.terra.es“))

(doc/”//a[@href]“).each do |link|

   puts link.to_s

end

 

Este sencillo código muestra todos los enlaces que tiene la página web de terra.

 

2) nokogiri ( Aaron Patterson): Esta es una librería más reciente que es muy parecida a hpricot. La gran diferencia de sus creadores es que utiliza unas bibliotecas mucho más rápidas (libxml2 y libslt1) haciéndola hasta 7 veces más rápida. Sin duda esta afirmación trae polémica en la red entre los usuarios de la clásica hpricot. Una ventaja de esta es que soporta un modo compatibilidad con hpricot haciéndo fácil reusar el código utilizado anteriormente.

 

require ‘nokogiri’

doc = Nokogiri::HTML(<<-eohtml)
<html>
  <body>
    <div id=”wrapper”>
      <h1>Hello world</h1>
      <p>Paragraph</p>
    </div>
  </body>
</html>
eohtml

doc.xpath(‘//p’).each do |paragraph|
    puts paragraph.text
end

 

He probado ambas con Ubuntu obteniendo muy buenos resultados y haciendo limpieza de código html de forma muy rápida.

Podéis encontrar ambas en github y ambas se instalan como gem. Aunque en el caso de nokogiri necesitaremos instalar unos paquetes antes.

Hpricot, nokogiri

Popularity: 1% [?]

Get Adobe Flash playerPlugin by wpburn.com wordpress themes