2013-11-24 122 views
8

下面一個網站的HTML源代碼是獲取通過DOM ID某些元素從外部網頁PhantomJS的例子:如何獲得與PhantomJS

var page = require('webpage').create(); 
console.log('The default user agent is ' + page.settings.userAgent); 
page.settings.userAgent = 'SpecialAgent'; 
page.open('http://www.httpuseragent.org', function(status) { 
    if (status !== 'success') { 
    console.log('Unable to access network'); 
    } else { 
    var ua = page.evaluate(function() { 
     return document.getElementById('myagent').textContent; 
    }); 
    console.log(ua); 
    } 
    phantom.exit(); 
}); 

我希望得到一個網頁的整個HTML源代碼... 我該怎麼做呢?

+0

如果你想HTML源代碼,然後使用類似[HTTP模塊(http://nodejs.org/docs/v0.5.2/ api/http.html#http.request),而不是通過瀏覽器運行該頁面(這將執行JS並用它對DOM進行修改)。 – Quentin

+0

能告訴我一個例子嗎? – MOB

回答

10

所有您需要做的是使用page.content

var page = require('webpage').create(); 
page.onError = function(msg, trace) { 
    //prevent js errors from showing in page.content 
    return; 
}; 
page.open('http://www.httpuseragent.org', function() { 
    console.log(page.content); //page source 
    phantom.exit(); 
}); 
+4

這相當於服務器提供的未經處理的原始html相對於dom(已由瀏覽器使用javascript進行處理並已經過一定程度的語法修正)的HTML。 –

+2

這就是使用像PhantomJS這樣的工具的要點。如果你想讓原始數據使用像curl或wget這樣的低級工具。 –