最近、コマンドライン引数としてpythonからphantomJSを実行することをテストしようとしていましたが、まだ理解できていませんが、例を見てきました。PhantomJSはコマンドラインから実行されるため、次のようになります。 PhantomJSが吐き出す結果は、変数に直接入ります。
その道を進む前に、node.jsでこれを機能させることは実際には私にとってより便利であり、私は考えました。プログラムがコマンドラインから実行され、データ結果を保存するときに、ノードを使用してPhantomJSを実行できますか? PhantomJSは通常、変数に吐き出されますか?
トリックが多すぎるように見えるので、 phantomjs-node は使用しません。
このすべての理由は、プログラムが実行する別のアクションと同時にPhantomJSを実行し、記録された結果のデータを他の目的に使用できるようにするためです。
簡単に言えば、Pythonでシステムコマンドラインを実行できますが、node.jsでも同じことができますか?
乾杯:)
編集:ノードとファントムが異なるjs環境を使用していることを理解しています。ファントムを独自のプロセスとして実行し、すべての出力データをnode.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
})
Donald Derekの回答の代わりに、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);
});