Je suis en train de développer un outil qui doit télécharger une page web à partir d'un serveur tiers, l'exécuter comme le ferait un navigateur, puis analyser le HTML. Ce qui me pose problème, c'est que l'outil doit analyser le HTML après l'exécution de tout le javascript et la modification du DOM. J'essaie d'utiliser PhantomJS dans ce but et cela fonctionne sur de petits bouts de code (juste un petit document html avec du javascript externe qui ajoute quelques nœuds au DOM) mais quand je fais la même chose avec un vrai site ( http://www.dba.dk/ ) Je n'obtiens pas le HTML final après toutes les modifications effectuées par le code js.
J'ai vraiment besoin d'aide à ce sujet car je suis bloqué depuis plus d'une semaine.
Mon code PhantomJS est simple :
if (phantom.state.length === 0) {
if (phantom.args.length === 0) {
console.log('Usage: test.js <some URL>');
phantom.exit();
} else {
var address = phantom.args[0];
phantom.state = Date.now().toString();
phantom.viewportSize = { width: 1280, height: 800 };
phantom.open(address);
}
} else {
var elapsed = Date.now() - new Date().setTime(phantom.state);
if (phantom.loadStatus === 'success') {
if (!first_time) {
var first_time = true;
if (!document.addEventListener) {
console.log('Not SUPPORTED!');
}
phantom.render('result.png');
var markup = document.documentElement.innerHTML;
console.log(markup);
phantom.exit();
}
} else {
console.log('FAIL to load the address');
phantom.exit();
}
}
le HTML envoyé à la console ne contient pas de contenu généré dynamiquement.