2016-05-24 6 views
0

Wenn ich Googles Lager api url gehe, wie ich unten aufgeführt, bekomme ich eine automatische Datei herunterladen. Mein Ziel ist es, den Inhalt der automatisch heruntergeladenen Datei zu übernehmen und in eine andere Datei auf meinem lokalen System zu streamen.Verwenden Sie Get, um Dateiinhalte in eine andere Datei zu schreiben

var get = require('get'); 

get('http://www.google.com/finance/historical?q=NASDAQ%3aADBE&startdate=Jan+01%2C+2009&enddate=Aug+2%2C+2012&output=csv').asString(function(err, data) { 
    var stream = fs.createWriteStream("./public/js/googl.csv"); 
     stream.once('open', function(fd) { 
     stream.write(data); 
     stream.end(); 
    }); 
}); 

Ich konnte dies mit einem anderen api Link erreichen: link

[http://ichart.finance.yahoo.com/table.csv?s=INTC & a = 6 & b = 10 & c = 2013 & d = 6 & e = 10 & f = 2013]

Diese beiden API-Links machen das Gleiche, geben eine CSV-Datei mit Bestandsdaten aus dem angeforderten Bestand aus. Mein Problem ist, wenn ich Google Api Link verwende, wirft es mir einen Fehler und sagt, es ist "nicht identifiziert". Ich habe versucht, die Daten mit console.log (Daten) zu protokollieren; und ich bekomme auch nichts. Wenn ich & output = csv entferne, funktioniert es, aber ich erhalte ein Bündel Javascript, das ich nehme, ist auf der tatsächlichen Seite. Wie kann ich den Inhalt der automatisch heruntergeladenen Datei abrufen und im Datenparameter meiner Get-Funktion speichern?

+0

können Sie den vollständigen Fehler enthalten Sie bekommen? – jehna1

+0

Es funktioniert auf Chrome, wenn Sie einfach zu der URL navigieren, also müssen Sie Ihre Knotenanforderung wahrscheinlich eher wie eine Chrome-Anfrage aussehen lassen, indem Sie die Anforderungsheader spoofen. – dandavis

+0

Hier ist die Fehlermeldung: _stream_writable.js: 268 var len = state.objectMode? 1: Stücklänge; ^ Typeerror: (: 268: 41 _stream_writable.js) bei WriteStream.Writable.write (_stream_writable.js: 215: 11) nicht Eigenschaft 'Länge' undefinierter bei writeOrBuffer gelesen –

Antwort

0

ich von einem get-Modul auf eine Anfrage-Modul eingeschaltet und es funktionierte, ex: https://www.npmjs.com/package/request Dies ist die Funktion, die ich verwendet:

request('http://www.google.com/finance/historical?q=NASDAQ%3aADBE&startdate=Jan+01%2C+2009&enddate=Aug+2%2C+2012&output=csv',  function (error, response, body) { 
if (!error && response.statusCode == 200) { 
    var stream = fs.createWriteStream("./public/js/googl.csv"); 
     stream.once('open', function(fd) { 
     stream.write(body); 
     stream.end(); 
    }); 
    } 
}); 
Verwandte Themen