Ho usato due modi diversi in passato, tra cui il metodo page.evaluate(), che interroga il DOM che Declan ha menzionato. L'altro modo in cui ho passato informazioni dalla pagina web è quello di sputare a console.log() da lì, e l'uso di script phantomjs:
page.onConsoleMessage = function (msg, line, source) {
console.log('console [' +source +':' +line +']> ' +msg);
}
Potrei anche intrappolare il msg variabile nel onConsoleMessage e cercare alcuni dati incapsulati. Dipende da come si desidera utilizzare l'output.
Poi nello script Nodejs, si dovrà eseguire la scansione del output dello 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
}
});
}
Speranza che aiuta un po '.
Stai cercando di fare questo lato client o lato server? –
@DeclanCook serveride, penso? Clientside richiederebbe all'utente di installare il fantoccio giusto? Che non funzionerebbe se capisco correttamente. Grazie – Harry
Cosa stai tentando di fare con l'html una volta che ce l'hai? Sto cercando di capire cosa stai cercando di ottenere. Phantomjs ha dom manipulation vedi http://code.google.com/p/phantomjs/wiki/QuickStart#DOM_Manipulation stai andando a inviare questo da qualche parte? –