Дамп HTML страницы, включая фреймы

Я хотел бы вывести содержимое HTML веб-страницы, включая HTML-код iframes, включенный в <iframe> элементы. На вкладке "Элементы" в Chrome Developer Tools можно отображать встроенный фрейм.

Когда я говорю "сбросить содержимое HTML", меня интересуют инструменты автоматизации браузера, такие как Selenium или PhantomJS. Есть ли в этих инструментах встроенные возможности?

Например, HTML-дамп, который мне нужен на этой странице, должен включать исходный HTML-код этой встроенной страницы.

1 ответ

Вы можете использовать фантомы, чтобы достичь этого

Вот фрагмент кода из кода фантомного 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-страница не принадлежит вам.

Другие вопросы по тегам