Durante nuestro día a día nos encontraremos muchas veces webs con contenido importante, datos muy interesantes, que se actualizan con frecuencia y cuyos datos necesitamos para nuestro proyecto jhlspx3. Pero al ir a usar algún servicio que proporcione dicha web para acceder a los datos o descargarlos, nos daremos cuenta de que no existe ningún tipo de servicio de fácil acceso a la información o simplemente el servicio de publicación tiene un coste o complejidad que nos impide usarlo.
Si estás en esa necesidad: los datos son muy importantes para el proyecto y no puedo acceder a ellos de ninguna otra manera salvo “a mano” debes plantearte hacer uso de CasperJS.
CasperJS es un lenguaje de scripting basado en Javascript. Aporta un nivel de abstracción sobre PhantomJs. Por lo tanto, es un lenguaje usado para navegar por la web sin un entorno visual, realizar revisiones de aplicaciones online, monitorizar, capturar pantallas o automatizar acciones en cualquier página.
Ésta última característica es la que más nos interesa, ya que queremos extraer información. Mediante selectores CSS3 o XPath navegaremos hasta el contenido que nos interesa, podremos acceder a la información que contienen los elementos seleccionados y realizar acciones sobre ellos.
Las acciones más interesantes suelen ser: hacer “click” en un botón o enlace, rellenar formularios o revisar valores de tablas. La toma de decisiones en función de los resultados, el manejo de errores, los eventos, son otras de sus características.
La instalación es muy sencilla: si tienes npm instalado en tu sistema, mediante los siguientes comandos:
npm -g install phantomjs npm -g install casperjs
Ya tendrías tu entorno preparado para trabajar.
Aquí se puede ver cómo usarlo para guardar en un array y mostrar todos los enlaces de una búsqueda:
var casper = require('casper').create(); var links; function getLinks() { // Rastreo de links var links = document.querySelectorAll('ul.navigation li a'); return Array.prototype.map.call(links, function (e) { return e.getAttribute('href') }); } // Abre casperjs casper.start('http://casperjs.org/'); casper.then(function () { links = this.evaluate(getLinks); }); casper.run(function () { for(var i in links) { console.log(links[i]); } casper.done(); });
El resultado sería:
$ casperjs query-casperjs.js http://docs.casperjs.org/en/latest/quickstart.html http://docs.casperjs.org/en/latest/ https://github.com/casperjs/casperjs https://groups.google.com/forum/#!forum/casperjs
Por lo tanto, CasperJS es una herramienta muy potente, para muchos de nuestros proyectos. No es sencilla o rápida de programar, pero nos permitirá automatizar o ayudar en muchas tareas.