从PhantomJS向node.js传递一个值[英] Passing a value from PhantomJS to node.js

问题描述

我有一个通过 exec() 调用执行的 phantomJS 脚本node.js 脚本.现在我需要从 PhantomJS 脚本中返回一个字符串,以便可以在节点中使用它.
有没有办法做到这一点?

节点应用:

child = exec('./phantomjs dumper.js',
    function (error, stdout, stderr) {
        console.log(stdout, stderr);      // Always empty
    });

dumper.js(幻影)

var system = require('system');
var page = require('webpage').create();
page.open( system.args[1], function (status) {
    if (status !== 'success') {
        console.log('Unable to access the network!');
    } else {

        return "String"; // Doesn't work
    }
    phantom.exit('String2'); //Doesn't work either
});

推荐答案

是的,只需使用 JSON.stringify(result) 从 PhantomJS 输出一个 JSON 字符串,然后使用 JSON.parse(stdout) 在 node.js 中解析它.

例如这样:

Node.js:

child = exec('./phantomjs dumper.js',
    function (error, stdout, stderr) {
        console.log(stdout, stderr);      // Always empty
        var result = JSON.parse(stdout);
    }
);

PhantomJS:

var system = require('system');
var page = require('webpage').create();
page.open( system.args[1], function (status) {
    if (status !== 'success') {
        console.log('Unable to access the network!');
    } else {

        console.log(JSON.stringify({string:"This is a string", more: []}));
    }
    phantom.exit();
});

这里是一些样板,了解如何使用 PhantomJS 进行抓取.

本文地址:https://www.itbaoku.cn/post/1739936.html