Cómo decirle a CasperJS que recorra una serie de páginas
Intento hacer que CasperJS logre lo siguiente:
Ir a través de una serie de páginas que se nombran secuencialmente por fecha.En cada página, busque un enlace PDF.Descargue el PDF.Obtuve un código de trabajo, pero no entiendo cómo CasperJS está pasando por la secuencia de eventos.
Por ejemplo, en el ejemplo de código a continuación, CasperJS intenta procesar el paso 2 y arroja un "Error de referencia: no se puede encontrar la variable: formDate", mientras que el paso 1 no se ejecuta en absoluto por alguna razón.
¿Qué hay de malo en mi razonamiento?
Me parece que elwhile
el bucle se ejecuta a una velocidad diferente a lacasper.then
métodos
casper.start();
casper.thenOpen('http://www.example.com', function() {
this.echo(this.getTitle());
});
casper.then(function() {
var start = new Date('2013-01-01T00:00:00');
var end = new Date('2013-01-31T00:00:00');
while(start < end) {
// step 1: define formDate
casper.then(function() {
var formDate = start.getFullYear()+"-"+("0" + (start.getMonth() + 1)).slice(-2) +"-"+("0" + start.getDate()).slice(-2) ;
casper.echo(formDate);
});
// Step 2: open the page and download the file
casper.thenOpen('http://www.example.com/' + formDate, function() {
var url = this.getElementAttribute('div#pdffulllink a.pdf', 'href');
this.echo(url);
this.download(url, 'Downloaded_' + formDate + '.pdf');
});
casper.then(function() {
// Step 3: redefine start
var newDate = start.setDate(start.getDate() + 1);
start = new Date(newDate);
});
}
});
casper.run(function() {
this.echo('Done.').exit();
});