Я разрабатываю инструмент, который должен загрузить веб-страницу со стороннего сервера, выполнить ее как браузер и затем проанализировать HTML. С чем я борюсь, так это с тем, что инструмент должен анализировать HTML после того, как весь javascript выполнен и DOM модифицирован. Я пытаюсь использовать PhantomJS для этой цели, и он работает с небольшими фрагментами кода (просто крошечный HTML-документ с внешним javascript, который добавляет некоторые узлы в DOM), но когда я делаю то же самое с реальным сайтом (http://www.dba.dk/) Я не получаю окончательный HTML после всех модификаций, сделанных кодом js.
Мне действительно нужна помощь в этом, так как я застрял в ней более недели.
Мой код PhantomJS прост:
if (phantom.state.length === 0) {
if (phantom.args.length === 0) {
console.log('Usage: test.js <some URL>');
phantom.exit();
} else {
var address = phantom.args[0];
phantom.state = Date.now().toString();
phantom.viewportSize = { width: 1280, height: 800 };
phantom.open(address);
}
} else {
var elapsed = Date.now() - new Date().setTime(phantom.state);
if (phantom.loadStatus === 'success') {
if (!first_time) {
var first_time = true;
if (!document.addEventListener) {
console.log('Not SUPPORTED!');
}
phantom.render('result.png');
var markup = document.documentElement.innerHTML;
console.log(markup);
phantom.exit();
}
} else {
console.log('FAIL to load the address');
phantom.exit();
}
}
HTML-код, выгруженный на консоль, не содержит динамически генерируемого содержимого