0

Je suis nouveau à PhantomJS et en jouant avec le code le plus basique: aller chercher une page google et capturer la capture d'écran.PhantomJS ne rend pas le contenu de la page complète

L'URL que je suis en train de chercher est: https://www.google.com/#tbm=lcl&q=starbucks

Si vous l'ouvrez dans un vrai navigateur, vous verrez qu'il ressemble à ceci:

enter image description here

Mais mes PhantomJS il voit ceci:

enter image description here

au début, je pensais que la charge de contenu web async Comme je suis trop lent, j'ai réussi à attendre plusieurs secondes avant de capturer l'écran, mais je vois que PhantomJS n'arrive toujours pas à obtenir le contenu.

Voici mon extrait de code:

var page = require('webpage').create(); 
page.settings.userAgent = 'Mozilla/5.0 (X11; CrOS x86_64 8172.45.0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.64 Safari/537.36'; 
page.viewportSize = { width: 1280, height: 800 }; 

page.open('https://www.google.com/#tbm=lcl&q=starbucks', function() { 

    setTimeout(function(){ 
    page.render('screenshot_failed.png'); 
    phantom.exit(); 
    }, 5000); 
}); 

S'il vous plaît-moi de ce que je peux manquer lors de la récupération de cette page Web. Merci!

+0

Avez-vous essayé de définir la taille de la fenêtre? 'page.viewportSize = { largeur: 480, hauteur: 800 };' – quirimmo

+0

Salut @quirimmo merci pour le commentaire. Oui j'ai essayé de le régler à 1280x800, mais cela n'a pas aidé. (Je vais mettre à jour la question pour refléter ce changement.) –

+0

oh bizarre, pouvez-vous essayer aussi une autre solution s'il vous plaît? l'afficher comme réponse mais je vais le supprimer si cela ne va pas aider. C'est horrible écrire ou coller le code ici -.- – quirimmo

Répondre

0

En plus de tout le code que vous avez déjà, essayez de forcer la page à la taille que vous voulez dans le rappel ouvert:

var width = 1280; 
var height = 800; 
var webpage = require('webpage'); 

page.open('https://www.google.com/#tbm=lcl&q=starbucks', function(status) { 
    page.evaluate(function(w, h) { 
     document.body.style.width = w + "px"; 
     document.body.style.height = h + "px"; 
    }, width, height); 
    page.clipRect = {top: 0, left: 0, width: width, height: height};                               
    page.render('screenshot_failed.png'); 
}); 
+0

Merci, mais ça ne marche toujours pas ... J'ai eu exactement la même capture d'écran sans contenu ... –

+0

oh vous essayez d'obtenir une capture d'écran. Alors s'il vous plaît essayons le code que je change dans la réponse – quirimmo

+0

fait, s'il vous plaît adapter ce code pour correspondre avec votre code – quirimmo