Я разрабатываю инструмент, который должен загрузить веб-страницу со стороннего сервера, выполнить ее, как это сделал бы браузер, а затем проанализировать 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 ');
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, выгружаемый на консоль, не содержит содержимого, генерируемого динамически