转储包含iframe的页面HTML

时间:2014-10-30 21:10:15

标签: html iframe selenium phantomjs browser-automation

我想转储网页的HTML内容,包括<iframe>元素中包含的iframe HTML。 Chrome开发者工具“元素”标签能够以这种方式显示嵌入iframe。

当我说“转储HTML内容”时,我对Selenium或PhantomJS等浏览器自动化工具感兴趣。这些工具中是否有内置的这种功能?

例如,我想要this page的HTML转储应该包含this embedded page的HTML源代码。

1 个答案:

答案 0 :(得分:-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上你使用“data-status”属性让phantomjs知道当页面准备就绪时html属于你。如果html页面不属于您,则另一种选择是使用一个很好的超时。