2011-04-05 22 views
13

¿Existe algún framework de crawler web de JavaScript?¿Existe algún framework de crawler web java script

+0

Podría ser más específico? ¿Estás buscando un rastreador web implementado en JavaScript? ¿Del lado del servidor (Node.js) o del lado del cliente (en un navegador)? –

+4

¿Existe un marco webcrawler del lado del cliente? ¿Cómo funcionaría eso? – Shakakai

+0

Escribí tres API usando javascript en el lado del servidor. Puedes ejecutar 'nodejs' desde tu línea de comando tan fácil como puedas 'python'. Esta es una pregunta perfectamente válida. – slezica

Respuesta

8

Pruebe el PhantomJS. No es exactamente un rastreador, pero podría usarse fácilmente para ese propósito. Tiene el motor completamente funcional WebKit incorporado, con la capacidad de guardar capturas de pantalla, etc. Funciona como el simple intérprete JS de la línea de comandos.

1

¿Lado del servidor?

Try-nodo rastreador: https://github.com/joshfire/node-crawler

+0

No consideraría esto como un rastreador, ya que no compila uri subsiguientes para rastrear. Básicamente, descargará la fuente de una URL determinada y activará una devolución de llamada cuando finalice. Depende del consumidor definir la lógica para rastrear los enlaces provistos en esa página, algo que no es muy sencillo. –

10

Hay un nuevo marco que se acaba de liberar de Node.js llamada spider. Utiliza jQuery bajo el capó para rastrear/indexar las páginas HTML de un sitio web. La API y la configuración son realmente agradables, especialmente si ya conoces jQuery.

Desde el banco de pruebas, he aquí un ejemplo de rastreo de la página web del New York Times:

var spider = require('../main'); 

spider() 
    .route('www.nytimes.com', '/pages/dining/index.html', function (window, $) { 
    $('a').spider(); 
    }) 
    .route('travel.nytimes.com', '*', function (window, $) { 
    $('a').spider(); 
    if (this.fromCache) return; 

    var article = { title: $('nyt_headline').text(), articleBody: '', photos: [] } 
    article.body = '' 
    $('div.articleBody').each(function() { 
     article.body += this.outerHTML; 
    }) 
    $('div#abColumn img').each(function() { 
     var p = $(this).attr('src'); 
     if (p.indexOf('ADS') === -1) { 
     article.photos.push(p); 
     } 
    }) 
    console.log(article); 
    }) 
    .route('dinersjournal.blogs.nytimes.com', '*', function (window, $) { 
    var article = {title: $('h1.entry-title').text()} 
    console.log($('div.entry-content').html()) 
    }) 
    .get('http://www.nytimes.com/pages/dining/index.html') 
    .log('info') 
    ; 
+0

Pasar una mañana para hacer que Spider funcione, no se puede ejecutar en 0.6.6 node.js. – Kuroro

+0

Este es un buen comienzo, pero no parece manejar los meta-redireccionamientos o las anulaciones de base documental por lo que no podrá rastrear muchos sitios. Pero es la mejor implementación que he visto para el nodo. Y con soporte para cookies, es mejor que otros rastreadores de código abierto. –

Cuestiones relacionadas