Я пытаюсь получить HTML-код и снимок веб-сайта после загрузки динамического содержимого, например рекламы.
Когда я использую функцию рендеринга, на странице отображается содержимое внутри фреймов, но при сохранениисодержимое в файл, iframes дублируются или имеют странные, такие как исчезновение.
Поэтому мне интересно, есть ли способ сохранить полную DOM (со всем уже загруженным динамическим контентом, таким как js илиiframes).
Вот мой код:
var page = new WebPage(),
address, output, size;
if (phantom.args.length < 2 || phantom.args.length > 3) {
console.log('Usage: rasterize.js URL filename');
phantom.exit();
} else {
address = phantom.args[0];
output = phantom.args[1];
page.viewportSize = { width: 600, height: 600 };
page.open(address, function (status) {
if (status !== 'success') {
console.log('Unable to load the address!');
} else {
window.setInterval(function(){
page.render(output+'.png');
var fs = require('fs');
fs.write(output+'.html', page.content, 'w');
phantom.exit();
}, 4000);
}
});
}
Вот пример вывода изображения (с iframes, выделенными красным):
http://dl.dropbox.com/u/123181/prodigy.msn.com.png
Вот пример вывода HTML:
http://dl.dropbox.com/u/123181/prodigy.msn.com.html