Парсинг страницы с прогрузкой скриптов, phantomjs
Нужно спарсить страницу https://dashboard.kitopiconnect.com/login. Обычные методы типа curl, simplehtmldom не помогают. Перешел к phantomjs. На просторах интернета нашел и доработал следующий код:
var page = require('webpage').create();
var url = 'https://dashboard.kitopiconnect.com/login';
page.settings.loadImages = true;
page.settings.resourceTimeout = 100000;
page.settings.javascriptEnabled = true;
page.settings.onLoadFinished = true;
page.open(url, function (status) {
setTimeout(function() {
// код, который должен выполнятся после полной загрузки страницы
page.includeJs('https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js', function () {
console.log('\n Evaluate Page \n');
// Sandboxed
var images = page.evaluate(function () {
var images = [];
function getImgDimensions($i) {
return {
top: $i.offset().top,
left: $i.offset().left,
width: $i.width(),
height: $i.height(),
}
}
$('img').each(function () {
var img = getImgDimensions($(this));
images.push(img);
});
return images;
});
console.log(images.length);
images.forEach(function (imageObj, index, array) {
page.clipRect = imageObj;
page.render('images/' + index + '.png');
});
// Exit the session
phantom.exit();
});
console.log("Status: " + status);
if (status === "success") {
page.render('example.png');
phantom.exit();
}
}, 10000); // задержка
});
НО,к сожалению, выводит скриншот пустой страницы, а точнее вообще ничего. Такое ощущение, что js скрипты не подгружаются. Кто-нибудь знает, в каком направлении лучше двигаться или что можно сделать?
Ответы (1 шт):
Автор решения: Azmandios
→ Ссылка
у phantomjs довольно старый движок, он не поддерживает некоторые важные функции, например:
function.prototype.bind
как это обойти можете почитать здесь: один из вариантов решения проблемы
так же можете попробовать использовать форк Casper.js
думаю это решит вашу проблему.