2014-10-30 73 views
3

我想轉儲網頁的HTML內容,其中包括元素中包含的iframe的HTML。 Chrome開發者工具「元素」標籤能夠顯示以這種方式嵌入的iframe。轉儲包含iframe的頁面的HTML

當我說「轉儲HTML內容」時,我對Selenium或PhantomJS等瀏覽器自動化工具感興趣。這些工具中是否有這種內置的容量?

例如,我希望this page的HTML轉儲應該包含this embedded page的HTML源代碼。

回答

-1

您可以使用phantomjs實現這一

這裏是幻象JS服務器代碼的代碼片段。

var system = require('system'); 
var url = system.args[1] || ''; 
if(url.length > 0) { 
    var page = require('webpage').create(); 
    page.open(url, function (status) { 
    if (status == 'success') { 
     var delay, checker = (function() { 
     var html = page.evaluate(function() { 
      var body = document.getElementsByTagName('body')[0]; 
      if(body.getAttribute('data-status') == 'ready') { 
      return document.getElementsByTagName('html')[0].outerHTML; 
      } 
     }); 
     if(html) { 
      clearTimeout(delay); 
      console.log(html); 
      phantom.exit(); 
     } 
     }); 
     delay = setInterval(checker, 100); 
    } 
    }); 
} 
上的HTML

使用「數據狀態」屬性,讓phantomjs知道什麼時候該頁面已準備就緒如果HTML是屬於你的。如果html頁面不屬於你,另一個選擇是使用一個很好的超時。

+0

這不回答這個問題。你如何獲得iframe的來源?另外,等待「頁面準備好」是不必要的,因爲只有當頁面準備就緒時才調用'page.open'回調。 – 2015-01-21 13:07:31

+0

您可以獲取iframe從html變量指向的Url,然後使用它加載並打開該頁面,然後使用url和page.open()再次在iframes url上獲取iframes內容,然後替換包含所有html的html變量中的整個iframe標籤,你是否希望我爲你編碼?也許打開小提琴? – wauk 2015-01-21 13:22:18

+0

你似乎有一個不錯的主意。您可以將其添加到您的答案(在這一點上,我刪除downvote),並可能通過添加代碼來支持這一點(如果它是正確的,我會加註)。 – 2015-01-21 13:26:35