skazzo
30-10-2014, 11:53
Ciao a tutti!
spero che d queste parti ci sia ancora qualche cliente telecom, che come me è stufo di visitare il loro sito ogni bimestre per scaricare un semplice pdf (ho già chiesto/proposto in precedenza di ottenere la bolletta via mail per risparmiare banda sia a me che a loro, ovviamente non ho mai ricevuto risposta).
All'inizio stavo cercando di usare un semplice curl o wget ma ovviamente l'uso massivo di javascript e redirect del sito 187 rendono impossibile questa strada.
Cercando in giro ho trovato casper, una libreria JS che siede sopra PhantomJS e permette di automatizzare la navigazione internet, utile per i test sui propri siti ma anche per fare dello scraping.
Grazie a casper sono riuscito ad arrivare alla schermata in cui dovrei ottenere il PDF, ma tra popup e redirect non ci sto capendo nulla... ecco qui quello che ho fatto fino ad ora:
// usare casperjs --ignore-ssl-errors=yes bolletta.js
var casper = require('casper').create();
var url = 'http://www.telecomitalia.it';
var user = 'NOMEUTENTE';
var pwd = 'PASSWORD'
// login automatico
casper.start(url, function() {
this.fill('form#ti-auth-login1-form', {
username: user,
password: pwd
}, true);
});
// mi sposto sull'elenco fatture
casper.then(function(){
this.clickLabel('Elenco fatture','a');
});
// clicco sul primo pulsante per scaricare il pdf
casper.then(function(){
this.clickLabel('SCARICA/STAMPA PDF','a');
});
// aspetto che si carichi il popup, dovrebbe essere una pagina asp
casper.waitForPopup(/asp/, function(){
console.log("popup found");
});
casper.withPopup(/asp/, function() {
console.log(this.getHTML());
});
casper.run();
(ovviamente in questo momento non è possibile accedere all'area clienti per problemi al server, vediamo quando ritorna su...)
L'ultimo step mi restituisce una pagina asp con una funzione "onload" nel body che non fa altro che eseguire il comando submit presente nelle poche righe di codice, ma non riesco a capire se casper lo interpreta, e se sì come ottenere la pagina risultante (che dovrebbe essere il pdf che voglio scaricare).
Google non mi aiuta molto nella risoluzione di questo quesito, forse un waitForResource potrebbe funzionare, ma non so cosa mi devo aspettare, sopratutto perché quando uso un browser normale il pdf visualizzato ha comunque una url che termina con .asp...
qualcuno riesce a illuminarmi?
grazie per l'attenzione!
spero che d queste parti ci sia ancora qualche cliente telecom, che come me è stufo di visitare il loro sito ogni bimestre per scaricare un semplice pdf (ho già chiesto/proposto in precedenza di ottenere la bolletta via mail per risparmiare banda sia a me che a loro, ovviamente non ho mai ricevuto risposta).
All'inizio stavo cercando di usare un semplice curl o wget ma ovviamente l'uso massivo di javascript e redirect del sito 187 rendono impossibile questa strada.
Cercando in giro ho trovato casper, una libreria JS che siede sopra PhantomJS e permette di automatizzare la navigazione internet, utile per i test sui propri siti ma anche per fare dello scraping.
Grazie a casper sono riuscito ad arrivare alla schermata in cui dovrei ottenere il PDF, ma tra popup e redirect non ci sto capendo nulla... ecco qui quello che ho fatto fino ad ora:
// usare casperjs --ignore-ssl-errors=yes bolletta.js
var casper = require('casper').create();
var url = 'http://www.telecomitalia.it';
var user = 'NOMEUTENTE';
var pwd = 'PASSWORD'
// login automatico
casper.start(url, function() {
this.fill('form#ti-auth-login1-form', {
username: user,
password: pwd
}, true);
});
// mi sposto sull'elenco fatture
casper.then(function(){
this.clickLabel('Elenco fatture','a');
});
// clicco sul primo pulsante per scaricare il pdf
casper.then(function(){
this.clickLabel('SCARICA/STAMPA PDF','a');
});
// aspetto che si carichi il popup, dovrebbe essere una pagina asp
casper.waitForPopup(/asp/, function(){
console.log("popup found");
});
casper.withPopup(/asp/, function() {
console.log(this.getHTML());
});
casper.run();
(ovviamente in questo momento non è possibile accedere all'area clienti per problemi al server, vediamo quando ritorna su...)
L'ultimo step mi restituisce una pagina asp con una funzione "onload" nel body che non fa altro che eseguire il comando submit presente nelle poche righe di codice, ma non riesco a capire se casper lo interpreta, e se sì come ottenere la pagina risultante (che dovrebbe essere il pdf che voglio scaricare).
Google non mi aiuta molto nella risoluzione di questo quesito, forse un waitForResource potrebbe funzionare, ma non so cosa mi devo aspettare, sopratutto perché quando uso un browser normale il pdf visualizzato ha comunque una url che termina con .asp...
qualcuno riesce a illuminarmi?
grazie per l'attenzione!