2013-10-05 5 views
9

Ich versuche, eine CSV-Datei (Werbe-Bericht) von einer Website mit dem untenstehenden Code herunterladen. Das Problem ist, dass es die HTML-Seite und nicht die CSV-Datei herunterladen wird. Ich kann Ihnen nicht die URL geben, wie es hinter dem Login ist, aber es ist ähnlich gelagerten Fall, wenn Sie Firefox aus der unten stehenden URL herunterladencasperjs csv-Datei herunterladen

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

Es ist eine GET-Anfrage und wenn ich inspizieren Element Registerkarte Netzwerk die get Anfrage wird abgebrochen. Ich bin neu bei Casper und weiß nicht, wie ich mit solchen Anfragen umgehen soll. Jede mögliche Hilfe würde

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'); 
}); 

-Antwortheaders

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) 

Antwort

16

beantwortet meine Frage verstanden werden, hier ist die Lösung

Referenz: 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); 
     } 
    } 
});