是否可以从节点运行 PhantomJS.js作为命令行参数



我最近打算测试从python运行phantomJS作为命令行参数,我还没有解决这个问题,但已经看到了示例。因为PhantomJS是从命令行运行的,这似乎是可能的。PhantomJS吐出的结果将直接进入变量。

我走这条路之前,在 node.js 中完成这项工作实际上对我来说更有用,这让我想到,我是否可以使用 node 来运行 PhantomJS,因为程序从命令行运行并存储 PhantomJS 通常会吐出的数据结果到变量中?

我宁愿不使用phantomjs-node,因为它似乎使用了太多技巧。

所有这些的原因是能够在程序采取的另一个操作的同时运行PhantomJS,并将其记录的结果数据用于其他一些事情。

简而言之,您可以在python中运行系统命令行内容,我可以在node.js中执行相同的操作吗?

干杯:)

编辑:我知道节点和幻影使用不同的js环境,这很酷,因为我只想将幻影作为自己的进程运行,并将所有输出数据捕获到节点.js变量中(数据将是一对,字符串和浮点数的数组。我不想用幻影"驱动",我会制作加载的 javascript 文件来做我想做的事。我想要的只是幻像输出。:)

来自 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
})

我想你可以为Node.js制作一个简单的脚本来运行;在该脚本中,phantomjs脚本将作为子进程运行。您可以在此答案中看到工作示例(以及一些文档的链接)。我想这个讨论可能对你也有帮助。

作为唐纳德·德里克答案的替代方法,您可以使用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);
});

最新更新