Recuperar estadísticas de un sitio con Ruby

Junio 28 2009Se el primero en comentar

Guardado en : Linux y Software Libre, Programación, Social / Internet

Muchas ocasiones hemos tenido la necesidad de integrar información que está en otro sitio web dentro del nuestro.
En este ejemplo integraremos las estadísticas del sitio clustermaps, dentro del contenido de un sitio web.
Utilizaremos Ruby como lenguaje de scripting, dado que es más portable que usar bash o powershell, además de ser más potente dado que es un lenguaje de programación completo.

require 'open-uri'
require 'hpricot'
url = 'http://www2.clustrmaps.com/es/counter/maps.php?url=http://www.misitio.com'
#Abrimos el archivo desde el sitio web.
parser = Hpricot(open(url))
table = (parser/"html/body/form/div/div[2]/table[2]/tr/td[2]/")
#Quitamos comentarios y demas cosas (scripts)
html = table.inner_html.gsub(/<!--[.]*-->/,'')
html = html.gsub(/<!--|google_.*|\/\/.*/,'').strip
puts html = '
<table class="estadisticas"><tr><td>'+html.gsub(/2[0-9]+/,'\0')+"</table>"
#Tenemos nuestro archivo de estadísticas
stats = File.new("stats.htm", "w")
#Guardamos y cerramos.
stats.write(html)
stats.close
#html listo para ser añadido con Ajax.

Explicaré un poco la líneas

require 'open-uri'
require 'hpricot'

open-uri permite extender las funciones de manejo de archivos para poder utilizar URL’s en ellas.

hpricot es un parser de html muy sencillo de utilizar que permite utilizar selectores CSS y XPath.
Para obtener una consulta XPath fácilmente al contenido del elemento que buscamos, podemos usar la extensión de Firefox Firebug que permite copiar el camino XPath a un determinado elemento, y con el método inner_html se puede obtener su contenido.
El método gsub de la clase String, permite reemplazar un patrón especificado con una expresión regular, y en este caso lo utilizamos para eliminar tanto los comentarios, como la publicidad que estaban embebidas en la tabla.
Espero les sirva y puedan adaptarlo.

Comparte esta información:
  • Digg
  • Sphinn
  • del.icio.us
  • Facebook
  • Mixx
  • Google Bookmarks
  • BarraPunto
  • LinkedIn
  • Technorati
  • TwitThis

Deja un comentario