Extrayendo resultados de google mobile con CasperJS
CasperJS es un framework sobre PhantomJS que nos entrega una herramienta de mas alto nivel (comparado con PhantomJS) para automatizar procesos en un navegador, como completar formularios, extraer datos, secuencia de navegación entre páginas, etc.
Instalación con git
git clone git://github.com/n1k0/casperjs.git cd casperjs git checkout tags/1.0.2
Ahora solo nos queda agregar la ruta del “binario” de casperjs a nuestras variables PATH global o crear un enlace en /bin/ … /usr/bin.
El siguiente script (no muy funcional, ya que podemos buscar en google usando sus API), es una modificación al ejemplo googlepagination.js del package de casperjs, modificando el user agent, el sitio a extraer (google mobile), inyectar jquery, extraer datos (titulo, enlace y comentario), etc. Resumiendo, ingresa datos en un formulario y luego comienza a iterar hasta la página 10, extrayendo los resultados a un arreglo global.
/** * Capture results multiples pages and links from google mobile * * Usage: $ casperjs find.js my search terms * * by deerme.org */ var casper = require("casper").create({ clientScripts:['jquery-1.8.1.min.js'] }); var utils = require("utils"); var currentPage = 1; var results = []; if (casper.cli.args.length === 0) { casper .echo("Usage: $ casperjs find.js my search terms") .exit(1) ; } var processPage = function() { if ( currentPage == 10 ) { return true; } res = this.evaluate(function(){ var res = []; $("div.web_result").each(function() { res.push({ title: $(this).find("a").text().trim(), link:"http://www.google.com" + $(this).find("a").attr('href'), description:$(this).find("span.cite").parent().parent().text().trim() }); }); return res; }); for(k in res) { results.push(res[k]); } //utils.dump(results); this.capture("google-mobile-"+ currentPage +".png"); this.echo("Retrieve results from page " + currentPage ); // Next Link if (this.exists("#navbar")) { currentPage++; this.echo("requesting next page: " + currentPage); url = this.getCurrentUrl(); this.thenClick("#navbar a").then(function() { this.waitFor(function() { return url !== this.getCurrentUrl(); }, processPage); }); } else { this.echo("EOF"); } return true; }; // Change User Agent casper.userAgent(' Opera Mini 5 Beta: Opera/9.80 (J2ME/MIDP; Opera Mini/5.0.15650/756; U; en) Presto/2.2.0'); // Load Page casper.start("http://google.com/", function() { this.fill('form[action="/search"]', { q: casper.cli.args.join(" ") }, true); }); // Retrivie multiples pages and links casper.then( processPage ); casper.then(function(){ utils.dump(results); }); casper.run();
Si ejecutamos el script junto a los arugmentos a buscar
casperjs googlemobile.js python spanish
El script imprimirá los resultados
No definitivamente mucho que conocer tema .
Me gusta mucho todos los puntos hiciste .