He utilizado dos maneras diferentes en el pasado, incluyendo el método page.evaluate() que consulta la DOM que Declan mencionó. La otra forma he pasado información de la página web es escupirla a console.log() a partir de ahí, y en el uso de la escritura PhantomJS:
page.onConsoleMessage = function (msg, line, source) {
console.log('console [' +source +':' +line +']> ' +msg);
}
yo podría también atrapan msg variable en el onConsoleMessage y busque algunos datos encapsulados. Depende de cómo quiera usar la salida.
Luego, en el guión nodejs, que tendría que escanear la salida del script 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
}
});
}
Esperanza que ayuda alguna.
¿Está buscando hacer este lado del cliente o del lado del servidor? –
@DeclanCook en el lado del servidor, ¿no? Clientside requeriría que el usuario instale el fantasma ¿verdad? Lo cual no funcionaría si lo entiendo correctamente. Gracias – Harry
¿Qué estás tratando de hacer con el html una vez que lo tienes? Tratando de entender lo que estás tratando de lograr. Phantomjs tiene dom manipulación ver http://code.google.com/p/phantomjs/wiki/QuickStart#DOM_Manipulation ¿vas a enviar esto a alguna parte? –