Recuperar estadísticas de un sitio con Ruby
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.
Quizá te interese :
Muchas veces hemos tenido necesidad de darle a alguna de nuestras aplicaciones, la capacidad de ...
De nuevo con el tema de Geocoding, ahora mostrando como hacerlo mediante ruby y yahoomaps.. E ...
Un RSS o Really Simple Sindication o también Rich Site Summary, nos sirve para sindicar o anotar ...








