Casperjs raspando conteúdo dinâmico
Estou tentando raspar issopágina usando Casperjs. A função principal do meu código funciona muito bem, mas o conteúdo é carregado dinamicamente e não consigo descobrir como acioná-lo.
Isto é o que estou fazendo agora:
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 });
O tempo de espera expirou, mesmo que eu tenha aumentado para 20s e o novo conteúdo nunca seja carregado. Eu tentei adaptar esta função ao meu 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);
}
Mas não consegui descobrir e nem tenho certeza se é relevante aqui. Alguma ideia?