I have a phantomJS script that is executed via an exec()
call in a node.js script.
Now I need to return a string from the PhantomJS script so that it can be utilized back in node.
Is there a way to achieve that ?
Node app:
child = exec('./phantomjs dumper.js',
function (error, stdout, stderr) {
console.log(stdout, stderr); // Always empty
});
dumper.js (Phantom)
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
});
Yeah just output a JSON string from PhantomJS using JSON.stringify(result)
and parse it in node.js with JSON.parse(stdout)
.
Like this for example:
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();
});
Here is some boilerplate for how to use PhantomJS to scrape.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With