0

我是PhantomJS的新手,玩最基本的代碼:抓取谷歌頁面並截取屏幕截圖。PhantomJS不會呈現整頁內容

我試圖獲取網址是:https://www.google.com/#tbm=lcl&q=starbucks

如果你在一個真正的瀏覽器打開它,你會看到它看起來是這樣的:

enter image description here

但我PhantomJS它看到這樣的:

enter image description here

起初,我想,也許異步Web內容負荷ing太慢了,所以我設法等了很多秒,然後捕獲屏幕,但我看到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); 
}); 

請點我什麼,我可以獲取該網頁時錯過。謝謝!

+0

你嘗試設置視口大小? 'page.viewportSize = { width:480, height:800 };' – quirimmo

+0

Hi @quirimmo感謝您的評論。是的,我嘗試將它設置爲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