2016-05-24 35 views
0

当我按照下面列出的方式访问Googles股票api网址时,我得到一个自动文件下载。我的目标是将自动下载的文件内容传输到本地系统上的另一个文件。使用get将文件内容写入另一个文件

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

我能够用另一API链路来实现:link

[http://ichart.finance.yahoo.com/table.csv?s=INTC &一个= 6 & B = 10 & C = 2013 & d = 6 & E = 10 & F = 2013]

这两个api链接都做同样的事情,从请求的股票输出一个包含股票数据的csv文件。我的问题是,当我使用谷歌API链接它会引发我一个错误,并说它是'未知'。我试图用console.log(data)记录数据;我也没有得到任何东西。当我删除&输出= csv它的作品,但我收到一串JavaScript,我认为是在实际页面上。我如何获取自动下载的文件的内容并将其存储在我的get函数的数据参数中?

+0

您可以包括你得到完整的错误? – jehna1

+0

它只在浏览到URL时适用于Chrome浏览器,所以很可能,您只需通过欺骗请求标头使您的节点请求看起来更像是Chrome请求。 – dandavis

+0

这是错误消息:_stream_writable.js:268 var len = state.objectMode? 1:chunk.length; ^ 类型错误:在writeOrBuffer无法读取的未定义 属性 '长度'(_stream_writable.js:268:41) 在WriteStream.Writable.write(_stream_writable.js:215:11) –

回答

0

我来自get模块切换到请求模块和它的工作,例如:https://www.npmjs.com/package/request这里是我使用的功能:

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