PhantomJS中沒有辦法直接訪問未改變的源代碼(在其他瀏覽器中稱爲view-source)。
您可以嘗試從PhantomJS緩存中讀取頁面(與--disk-cache=true
option一起運行時),但有一種更簡單的方法。你可以簡單地發送一個AJAX請求來獲取源代碼,然後你需要自己處理重定向。
var page = require('webpage').create(),
fs = require('fs');
function get(page, url) {
return page.evaluate(function(url){
var xhr = new XMLHttpRequest();
xhr.open('GET', url, false);
xhr.send(null);
return xhr.responseText;
}, url);
}
var url = 'http://example.com';
page.open(url, function(){
var co = get(page, url);
fs.write("original.html", co);
fs.write("rendered.html", page.content);
phantom.exit();
});
您可以用這個簡單的腳本看出,儘管不涉及JavaScript,但這兩個文件是不同的。
您可能需要與--web-security=false
選項運行。相反,經過url
到get()
功能,您可以直接訪問page.url
:
function get(page, url) {
url = url || page.url;
return page.evaluate(function(url){
var xhr = new XMLHttpRequest();
xhr.open('GET', url, false);
xhr.send(null);
return xhr.responseText;
}, url);
}
很有可能無法http://stackoverflow.com/questions/24069722/can-i-get-the-original-page-source -vs-current-dom-with-phantomjs-casperjs –
我讀過那篇文章,但我認爲這是關於JS修改DOM。我不太關心JS修改,更關心瀏覽器是關閉打開的標籤還是縮短到例如 - 我知道可以在瀏覽器中下拉副本,但它是修改後的副本。目前還不清楚這個帖子是否可能用於此目的。 – MyStream
你指的是電線上的東西。不,在PhantomJS中沒有辦法獲得它,但是你可以做一個Ajax請求來簡單地再次獲取頁面。 –