Lo bueno fue raspar el contenido del sitio web usando Node.js. Me gustaría crear algo muy, muy rápido que pueda ejecutar búsquedas al estilo de kayak.com , donde una consulta se envía a varios sitios diferentes, los resultados se extraen y se devuelven al cliente a medida que están disponibles.
Supongamos que este script solo debe proporcionar los resultados en formato JSON y podemos procesarlos directamente en el navegador o en otra aplicación web.
Algunos puntos de partida:
Usando node.js y jquery para raspar sitios web
¿Alguien tiene ideas?
Todas las soluciones antes mencionadas suponen ejecutar el raspador localmente. Esto significa que tendrá un rendimiento muy limitado (debido a que se ejecutan en secuencia o en un conjunto limitado de subprocesos). Un mejor enfoque, en mi humilde opinión, es confiar en una red de raspado existente, aunque comercial.
Aquí hay un ejemplo:
var bobik = new Bobik("YOUR_AUTH_TOKEN"); bobik.scrape({ urls: ['amazon.com', 'zynga.com', 'http://finance.google.com/', 'http://shopping.yahoo.com'], queries: ["//th", "//img/@src", "return document.title", "return $('script').length", "#logo", ".logo"] }, function (scraped_data) { if (!scraped_data) { console.log("Data is unavailable"); return; } var scraped_urls = Object.keys(scraped_data); for (var url in scraped_urls) console.log("Results from " + url + ": " + scraped_data[scraped_urls[url]]); });Aquí, el raspado se realiza de forma remota y se emite una devolución de llamada a su código solo cuando los resultados están listos (también hay una opción para recopilar resultados a medida que estén disponibles).
Puede descargar el SDK de proxy de cliente de Bobik en https://github.com/emirkin/bobik_javascript_sdk
Yo mismo he estado investigando y https://npmjs.org/package/wscraper se jacta de ser un
un agente web scraper basado en cheerio.js una implementación rápida, flexible y eficiente de core jQuery; construido sobre request.js; inspirado en http-agent.js
Muy poco uso (según npmjs.org) pero vale la pena echarle un vistazo a cualquier parte interesada.