В прошлом я использовал два разных способа, в том числе метод page.evaluate (), который запрашивает DOM, о котором упоминал Деклан. Другой способ, которым я передал информацию с веб-страницы, - выложить ее в console.log () и использовать в сценарии phantomjs:
page.onConsoleMessage = function (msg, line, source) {
console.log('console [' +source +':' +line +']> ' +msg);
}
Я мог бы также перехватить переменную msg в onConsoleMessage и найти некоторые инкапсулированные данные. Зависит от того, как вы хотите использовать вывод.
Затем в скрипте Nodejs вам нужно будет просмотреть выходные данные скрипта Phantomjs:
var yourfunc = function(...params...) {
var phantom = spawn('phantomjs', [...args]);
phantom.stdout.setEncoding('utf8');
phantom.stdout.on('data', function(data) {
//parse or echo data
var str_phantom_output = data.toString();
// The above will get triggered one or more times, so you'll need to
// add code to parse for whatever info you're expecting from the browser
});
phantom.stderr.on('data', function(data) {
// do something with error data
});
phantom.on('exit', function(code) {
if (code !== 0) {
// console.log('phantomjs exited with code ' +code);
} else {
// clean exit: do something else such as a passed-in callback
}
});
}
Надеюсь, это поможет некоторым.