Дамп 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-страница не принадлежит вам.