Casperjs raspando contenido dinámico
Estoy tratando de raspar estopágina usando Casperjs. La función principal de mi código funciona bien, pero el contenido se carga dinámicamente y no puedo entender cómo activarlo.
Esto es lo que estoy haciendo ahora:
casper.waitFor(function() {
this.scrollToBottom();
var count = this.evaluate(function() {
var match = document.querySelectorAll('.loading-msg');
return match.length;
});
if (count <= 1) {
return true;
}
else {
return false
};
}, function() { // do stuff });
El tiempo de espera expira, aunque lo aumenté a 20 segundos y el nuevo contenido nunca se carga. Intenté adaptar esta función a mi caso:
function tryAndScroll(casper) {
casper.waitFor(function() {
this.page.scrollPosition = { top: this.page.scrollPosition["top"] + 4000, left: 0 };
return true;
}, function() {
var info = this.getElementInfo('p[loading-spinner="!loading"]');
if (info["visible"] == true) {
this.waitWhileVisible('p[loading-spinner="!loading"]', function () {
this.emit('results.loaded');
}, function () {
this.echo('next results not loaded');
}, 5000);
}
}, function() {
this.echo("Scrolling failed. Sorry.").exit();
}, 500);
}
Pero no pude entenderlo y ni siquiera estoy seguro de que sea relevante aquí. ¿Algunas ideas?