0

私はPhantomJSに新しく、最も基本的なコードで遊んでいます:Googleページを取得し、スクリーンショットをキャプチャします。PhantomJSはフルページコンテンツをレンダリングしません

私はフェッチしようとしているURLは次のとおりです。https://www.google.com/#tbm=lcl&q=starbucks

あなたは本当のブラウザで開いた場合、あなたはそれがこのようになります表示されます。

enter image description here

しかし、私のPhantomJS、それは見ていますこの:

まず

enter image description here

、私は多分、非同期Webコンテンツの負荷を考えました私は数秒間待ってから画面をキャプチャすることができましたが、PhantomJSはまだコンテンツを取得できません。

は、ここに私のコードスニペットです:

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); 
}); 

このWebページを取得するときに私は逃したことができるものを私を指すください。ありがとう!あなたが既に持っているすべてのコードに加えて

+0

あなたはビューポートのサイズを設定してみたのですか? 'page.viewportSize = { 幅:480、 高さ:800 };' – quirimmo

+0

こんにちは@おかげでコメントしました。はい、私は1280x800に設定しようとしましたが、助けにはなりませんでした。 (私はこの変更を反映するために質問を更新します) –

+0

ああ、あなたはまた別の解決策を試してみることができますか?回答として投稿しますが、それが役に立たない場合は削除します。それはひどい書き込みまたはここにコードを貼り付けます - – quirimmo

答えて

0

、あなたが開いてコールバックの内側にしたいサイズにページを強制しよう:

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

ありがとう、しかしそれはまだ動作しません...私はコンテンツと全く同じスクリーンショットを得た... –

+0

ああ、あなたはスクリーンショットを取得しようとしている。だから私は答えを – quirimmo

+0

で変更しているコードを試してみましょう、あなたのコードと一致するようにこのコードを適応してください – quirimmo

関連する問題