node.js - navegador - phantomjs node js example
¿Es posible ejecutar PhantomJS desde node.js como un argumento de línea de comando? (3)
Recientemente iba a probar la ejecución de phantomJS desde Python como un argumento de línea de comandos, aún no he llegado a la conclusión, pero he visto ejemplos. Debido a que PhantomJS se ejecuta desde la línea de comandos, esto parece ser posible. El resultado que PhantomJS escupiría iría directamente a una variable.
Antes de seguir ese camino, hacer que esto funcione en node.js sería realmente más útil para mí y me hizo pensar, ¿puedo usar el nodo para ejecutar PhantomJS a medida que un programa se ejecuta desde la línea de comandos y almacena el resultado de datos que ¿PhantomJS normalmente escupiría en una variable?
Preferiría no usar phantomjs-node porque parece estar usando demasiados trucos.
El motivo de todo esto es poder ejecutar PhantomJS al mismo tiempo que otra acción que realiza el programa y utilizar los datos resultantes que se han registrado para otras cosas.
En pocas palabras, puedes ejecutar cosas de la línea de comandos del sistema en Python, ¿puedo hacer lo mismo en node.js?
Saludos :)
Edición: entiendo que node y phantom usan diferentes entornos js, eso es genial porque solo quiero ejecutar phantom como su propio proceso y capturar todos los datos de salida en una variable node.js (los datos serán una matriz de un par, cadena y punto flotante.) No quiero ''conducir'' con Phantom, crearé los archivos javascript cargados para lo que quiera. Todo lo que quiero es una salida fantasma. :)
Como una alternativa a la respuesta de Donald Derek, puede usar la función spawn
. Le permitirá leer la salida del proceso hijo tan pronto como se produzca, en lugar de que la salida se almacene en búfer y se los devuelva a todos a la vez.
Puedes leer más sobre esto here .
Un ejemplo de child_process.spawn .
var spawn = require(''child_process'').spawn,
ls = spawn(''ls'', [''-lh'', ''/usr'']);
ls.stdout.on(''data'', function (data) {
console.log(''stdout: '' + data);
});
ls.stderr.on(''data'', function (data) {
console.log(''stderr: '' + data);
});
ls.on(''close'', function (code) {
console.log(''child process exited with code '' + code);
});
Desde el NPM: https://npmjs.org/package/phantomjs
var path = require(''path'')
var childProcess = require(''child_process'')
var phantomjs = require(''phantomjs'')
var binPath = phantomjs.path
var childArgs = [
path.join(__dirname, ''phantomjs-script.js''),
''some other argument (passed to phantomjs script)''
]
childProcess.execFile(binPath, childArgs, function(err, stdout, stderr) {
// handle results
})
Supongo que puedes hacer un script simple para ejecutar Node.js; en ese script, el script phantomjs
se ejecutará como un proceso secundario. Puede ver el ejemplo de trabajo (y los enlaces para cierta documentación) en esta respuesta . Supongo que esta discusión podría ser útil para usted también.