我最近尝试使用节点js从其他网站(如yahoo Finance)(例如“ http://real-chart.finance.yahoo.com/table.csv?s=AAPL&a=11&b=12&c=1999&d=01&e=4&f=2016&g=d&ignore=.csv”这样的网址之一)收集一些数据,如果我将此网址放入浏览器,则会提示弹出窗口。
而在我的节点代码中找不到该网址。
var fs = require('fs');
var http = require('http');
var url = require('url');
var csv = require( "fast-csv" );
// var FILENAME = "file/table.csv";
var FILENAME = "http://real-chart.finance.yahoo.com/table.csv?s=AAPL&a=11&b=12&c=1999&d=01&e=4&f=2016&g=d&ignore=.csv";
function fast_csv_read(filename)
{
csv.fromPath(filename)
.on("data", function(data){
console.log("current data: ");
console.log(data);
})
.on("end", function(){
console.log("done reading");
});
}
fast_csv_read(FILENAME);
如果我使用浏览器下载此文件并将其保存在“ file / table.csv”中,则可以正常工作。
不知道出了什么问题...
最佳答案
.fromPath
仅接受文件路径,不接受URL。
您必须首先自己从URL检索文档,然后以下列方式之一将其内容提供给fast-csv
模块:
将文档内容传递到.fromString()
将可读流传递到.fromStream()
将可读流通过管道传输到.parse()
request
module提供了一种从URL返回可读流的便捷方法。用npm --save install request
安装。
例如,将可读流传递给.fromStream()
看起来像这样:
#!/usr/bin/env node
var csv = require( "fast-csv" );
// Require the 'request' module.
// Install it with `npm install --save request`.
var request = require('request');
var URL = "http://real-chart.finance.yahoo.com/table.csv?s=AAPL&a=11&b=12&c=1999&d=01&e=4&f=2016&g=d&ignore=.csv";
function fast_csv_read_url(url)
{
// Let request return the document pointed to by the URL
// as a readable stream, and pass it to csv.fromStream()
csv.fromStream(request(url))
.on("data", function(data){
console.log("current data: ");
console.log(data);
})
.on("end", function(){
console.log("done reading");
});
}
fast_csv_read_url(URL);
关于node.js - 如何使用 Node js处理在线csv文件,例如“http://…/data.csv?para1 =…&para2 =…”,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/35446897/