2013-10-05 19 views
9

Sto provando a scaricare un file csv (annuncio pubblicitario) da un sito usando il codice qui sotto. Il problema è che scaricherà la pagina HTML e non il file csv. Non si può dare l'URL, è dietro il login, ma è caso simile quando si scarica Firefox dalla sotto URLcasperjs scarica il file csv

http://www.mozilla.org/en-US/firefox/new/

Si tratta di una richiesta GET e quando lo faccio Inspect Element Scheda Rete get richiesta viene annullata. Sono nuovo di Casper e non so come gestire tali richieste. Qualsiasi aiuto sarebbe apprezzato

casper.then(function() { 
    var downloadURL = ""; 

    this.evaluate(function() { 
     var downloadURL = "http://www.lijit.com"+jQuery("#dailyCSV").attr('href'); 
    }); 

    this.download(downloadURL, '/Users/Ujwal/Downloads/caspertests/stats.csv'); 
}); 

intestazione di risposta

Age:0 
Cache-Control:max-age=0 
Connection:keep-alive 
Content-Disposition:attachment; filename=stats.csv 
Content-Encoding:gzip 
Content-Length:1634 
Content-Type:text/x-csv 
Date:Sat, 05 Oct 2013 15:28:21 GMT 
Expires:Sat, 05 Oct 2013 15:28:21 GMT 
P3P:CP="CUR ADM OUR NOR STA NID" 
Server:PWS/8.0.16 
Vary:Accept-Encoding 
X-Px:ms h0-s28.p9-jfk (h0-s62.p9-jfk), ms h0-s62.p9-jfk (origin>CONN) 

risposta

16

risposto alla mia domanda, ecco la soluzione

di riferimento: https://github.com/knorrium/google-books-downloader/blob/master/gbd.js

//Download the daily csv 
casper.then(function() {  
    this.click('#dailyCSV'); 
}); 

casper.on('resource.received', function (resource) { 
    "use strict"; 
    if ((resource.url.indexOf("publisherCSV/?startDate=") !== -1)) {   
     this.echo(resource.url); 
     var url, file; 
     url = resource.url; 
     file = "stats.csv"; 
     try { 
      this.echo("Attempting to download file " + file); 
      var fs = require('fs'); 
      casper.download(resource.url, fs.workingDirectory+'/'+file); 
     } catch (e) { 
      this.echo(e); 
     } 
    } 
});