¿Cuál es la diferencia entre PhantomJS y Node.js?

Phantom.js es un navegador sin cabeza. Entonces, en lugar de escribir URL, hacer clic en los enlaces y leer las páginas usted mismo, en su lugar, escribe un código JavaScript para realizar todas esas acciones. Es ideal para automatizar tareas que realiza en la web, como completar formularios o obtener los últimos titulares de noticias. También se utiliza para ejecutar scripts para realizar pruebas funcionales automatizadas de sitios web. Funciona muy bien como un rastreador / rastreador web. Su ventaja sobre otros raspadores web, que no se ejecutan dentro de un navegador sin cabeza, es que ejecutará el propio código JavaScript del sitio web como lo haría su navegador, por lo que obtendrá exactamente lo que obtendría un humano. De hecho, literalmente ejecuta exactamente el mismo código que los navegadores web populares como Safari y Chrome (WebKit).

Node.js es un marco para crear software basado en eventos. Da la casualidad de que usa JavaScript, ya que es el idioma de elección. Sin embargo, se ejecuta fuera del navegador. Eso es. No tiene todo lo que un navegador como Phantom.js tiene incorporado.

Sin embargo, hay toneladas de módulos de terceros que se pueden agregar a él. La mayoría de las personas usan el administrador de paquetes Node.js (npm) para descargar e instalar estos módulos en sus sistemas. Por lo tanto, puede usar Node.js para escribir un navegador web sin cabeza combinándolo con algunos otros módulos. En realidad, es relativamente simple de hacer, necesitará módulos para realizar solicitudes HTTP (solicitud), consultar / manipular el DOM (cheerio) y guardar archivos (sistema de archivos). Es posible que trabajar en el entorno asíncrono (controlado por eventos) de Node.js sea engorroso si no desea o necesita que su código se ejecute de forma asincrónica. Node.js no es para todos o para todo. Es por eso que hay otros marcos por ahí.

Hay algunos módulos de Node.js que implementan un navegador completo sin cabeza similar a Phantom.js, pero que yo sepa, ninguno de ellos usa WebKit para ejecutar el JavaScript de la página web y renderizar la página. Por esta razón, encontrará muchos paquetes de Node.js que en realidad solo están llamando a Phantom.js. Hacen esto para usar Phantom.js mientras obtienen las ventajas de trabajar en el entorno Node.js.

Un ejemplo de un navegador sin cabeza basado en Node.js que no usa Phantom.js es Zombie.js.