Я пытаюсь загрузить HTML-код веб-сайта, который почти полностью создан с помощью JavaScript. Итак, мне нужно смоделировать доступ к браузеру, и я играл с PhantomJS . Проблема в том, что сайт использует URL-адреса хэшбэга, и я не могу заставить PhantomJS обработать хэшбэнг - он просто продолжает вызывать домашнюю страницу.
Сайт http://www.regulations.gov . По умолчанию вы попадете в #! Домой. Я пробовал использовать следующий код (из здесь ), чтобы попытаться обработать различные хэшбэги.
if (phantom.state.length === 0) {
if (phantom.args.length === 0) {
console.log('Usage: loadreg_1.js ');
phantom.exit();
}
var address = 'http://www.regulations.gov/';
console.log(address);
phantom.state = Date.now().toString();
phantom.open(address);
} else {
var hash = phantom.args[0];
document.location = hash;
console.log(document.location.hash);
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();
}
}
Этот код создает правильный хэшбанг (например, я могу установить хеш на '#! Contactus') но он не генерирует динамически какой-либо другой HTML - только страницу по умолчанию. Однако он правильно выводит, когда я вызываю document.location.hash
.
Я также пытался установить начальный адрес для хэшбэга, но затем скрипт просто зависает и не работает » я ничего не делаю. Например, если я установил URL-адрес http://www.regulations.gov/#!searchResults;rpp=10;po=0
, скрипт просто зависнет после вывода адреса на терминал, и ничего никогда происходит.