update tutorial node instalar ejemplos descargar actualizar node.js web-scraping phantomjs jsdom zombie.js

node.js - tutorial - Raspa una página web y navega haciendo clic en los botones



node js tutorial (2)

Quiero realizar las siguientes acciones en el lado del servidor:

1) Raspar una página web
2) Simule un clic en esa página y luego navegue a la nueva página.
3) Raspar la nueva página
4) Simular algunos clics de botón en la nueva página
5) Enviar los datos al cliente a través de json o algo así

Estoy pensando en usarlo con Node.js.

Pero estoy confundido en cuanto a qué módulo debo usar
un zombie
b) Node.io
c) Phantomjs
d) JSDOM
e) Cualquier otra cosa

He instalado el nodo, io pero no puedo ejecutarlo a través del símbolo del sistema.

PD: estoy trabajando en el servidor de windows 2008


Los módulos que listaste hacen lo siguiente:

  • Phantomjs / Zombie - simular navegador (sin cabeza - en realidad no se muestra nada). Se puede utilizar para raspar estática o dinámica. O la prueba de sus páginas html.
  • Node.io/jsdom - webscraping: extracción de datos de la página (estática).

En cuanto a tus necesidades, puedes usar fantasma o zombie.


Zombie.js y Node.io se ejecutan en JSDOM, por lo tanto, sus opciones van con JSDOM (o cualquier contenedor equivalente), un navegador sin cabeza (PhantomJS, SlimerJS) o Cheerio.

  • JSDOM es bastante lento porque tiene que recrear DOM y CSSOM en Node.js.
  • PhantomJS / SlimerJS son navegadores sin cabeza adecuados, por lo tanto, los rendimientos están bien y también son muy confiables.
  • Cheerio es una alternativa ligera a JSDOM. No vuelve a crear la página completa en Node.js (solo descarga y analiza el DOM, no se ejecuta javascript). Por lo tanto, realmente no puede hacer clic en los botones / enlaces, pero es muy rápido raspar las páginas web.

Teniendo en cuenta sus necesidades, probablemente prefiera algo como un navegador sin cabeza. En particular, elegiría CasperJS porque tiene una API agradable y expresiva, es rápida y confiable (no necesita reinventar la rueda sobre cómo analizar y renderizar el dom o css como lo hace JSDOM) y es muy fácil Interactuar con elementos como botones y enlaces.

Su flujo de trabajo en CasperJS debería verse más o menos así:

casper.start(); casper .then(function(){ console.log("Start:"); }) .thenOpen("https://www.domain.com/page1") .then(function(){ // scrape something this.echo(this.getHTML(''h1#foobar'')); }) .thenClick("#button1") .then(function(){ // scrape something else this.echo(this.getHTML(''h2#foobar'')); }) .thenClick("#button2") thenOpen("http://myserver.com", { method: "post", data: { my: ''data'', } }, function() { this.echo("data sent back to the server") }); casper.run();