Rendera en javascript-webbsida med phantomjs


Jag försöker rendera en JavaScript-utvärderad källkod från en webbplats med hjälp av PhantomJS. Men varje gång jag försöker får jag bara källkoden som den är (liknande att visa källkod i webbläsaren). Vad jag egentligen vill ha är den JavaScript-utvärderade koden (det vi ser när vi inspekterar element i Google Chrome-webbläsaren). Min kod ser ut så här:

var page = require('webpage').create();
page.open('http://www.google.com/', function (s) {
    console.log(page.content);
    phantom.exit();
});

Gör jag något fel här?

Svar #1

Det här gjorde susen för mig:

window.setTimeout(function () {
        page.render(output);
        phantom.exit();
    }, 1000);

Svar #2

Troligen ja. I många fall körs inte JavaScript-koden på webbsidan omedelbart. Du kan ta hänsyn till detta genom att ge en liten försening, t.ex. genom att använda setTimeout, innan du tar värdet av page.content.