Si può fare qualcosa di simile:
var page = require('webpage').create(),
system = require('system'),
resources = [];
page.open('http://google.com', function (status) {
console.log('Loaded with http status:', resources[0].status);
phantom.exit();
});
page.onResourceReceived = function(response) {
// check if the resource is done downloading
if (response.stage !== "end") return;
// apply resource filter if needed:
if (response.headers.filter(function(header) {
if (header.name == 'Content-Type' && header.value.indexOf('text/html') == 0) {
return true;
}
return false;
}).length > 0)
resources.push(response);
};
Quindi, se avete bisogno di controllare lo stato della richiesta del primo navigatore (in questo caso pagina html di Google) si dovrebbe vedere come il primo quello restituito in resources[0].status
. Nel gestore onResourceReceived è possibile aggiungere altri filtri per le risorse da cui si tenta di ottenere il codice http.
UPDATE: grazie alla @fotijr, ha aggiunto un assegno per le risposte completate
fonte
2015-05-18 20:34:54
Tecnica eccellente. Un'altra condizione che potresti voler usare è controllare il palco. 'if (response.stage! ==" end ") return;' uscirà dalla funzione se la risorsa non è stata scaricata. Ciò impedirà la doppia elaborazione poiché c'è un evento "start" e "end" per ogni download. – fotijr
@fotijr giusto! Grazie! Aggiornerò lo snippet ora –
Semplicemente facendo un ringraziamento per una grande risposta! È contro le regole apparentemente ma è una risposta grande e precisa – Seer