Я использовал два различных способа в прошлом, в том числе метод page.evaluate(), который запрашивает DOM, о котором упоминал Деклан. Другой путь я прошел информацию от веб-страницы, чтобы выплюнуть в console.log() оттуда, и в использовании phantomjs сценария:
page.onConsoleMessage = function (msg, line, source) {
console.log('console [' +source +':' +line +']> ' +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
}
});
}
Надежда, что помогает некоторым.
Вы хотите сделать это на стороне клиента или на стороне сервера? –
@DeclanCook serverside Я думаю? Clientside потребует от пользователя установки фантомного права? Что бы не получилось, если я правильно понял. Спасибо – Harry
Что вы пытаетесь сделать с html, если у вас есть это? Пытаясь окунуться в то, что вы пытаетесь достичь. У Phantomjs есть манипуляция dom, см. Http://code.google.com/p/phantomjs/wiki/QuickStart#DOM_Manipulation, то вы собираетесь отправить это где-нибудь? –