Возможно ли запустить PhantomJS из node.js в качестве аргумента командной строки - программирование

Возможно ли запустить PhantomJS из node.js в качестве аргумента командной строки

Недавно я собирался протестировать phantomJS из python в качестве аргумента командной строки, я еще не обходил его, но видел примеры. Поскольку PhantomJS запускается из командной строки, это кажется возможным. Результат, который PhantomJS выплюнул, попадет прямо в переменную.

Прежде чем я поделюсь по этому пути, сделав эту работу в node.js, на самом деле будет более полезной для меня, и это заставило меня задуматься, могу ли я просто использовать node для запуска PhantomJS, поскольку программа запускается из командной строки и сохранить результат данных, который PhantomJS обычно выплевывает в переменную?

Я бы предпочел не использовать phantomjs-node, потому что, похоже, он использует слишком много трюков.

Причиной всего этого является возможность запуска PhantomJS в то же время, что и другое действие, которое выполняет программа, и использование полученных данных, записанных для некоторых других вещей.

Проще говоря, вы можете запускать системную командную строку в python, могу ли я сделать то же самое в node.js?

Приветствия:)

Изменить: я понимаю, что node и phantom используют разные среды js, это классно, потому что я просто хочу запустить phantom как свой собственный процесс и поймать все эти выходные данные в переменной node.js( данные будут массивом пары, строки и с плавающей запятой.) Я не хочу "водить" с помощью phantom, я создам загруженные файлы javascript, чтобы сделать то, что хочу. Все, что я хочу, это phantom вывод.:)

4b9b3361

Ответ 1

Я полагаю, вы можете сделать простой script для Node.js для запуска; в том, что script phantomjs script будет выполняться как дочерний процесс. Вы можете увидеть рабочий пример (и ссылки для некоторой документации) в этом ответе. Я полагаю, это обсуждение может быть полезно и вам.

Ответ 2

Из 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
})

Ответ 3

В качестве альтернативы ответа Дональда Дерека вы можете использовать функцию 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);
});