如何使用node js处理在线csv文件,例如“http://.../data.csv?para1=...¶2=...”

leo*_*.li 2 csv node.js

我最近尝试使用 Node js 从其他网络(例如雅虎财经)收集一些数据,其中一个网址如下“ 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);
Run Code Online (Sandbox Code Playgroud)

如果我用浏览器下载这个文件并将其保存在“file/table.csv”中,它就可以正常工作。不知道出了什么问题......

mkl*_*nt0 5

.fromPath仅接受文件路径,不接受 URL。

您必须首先自己从 URL 检索文档fast-csv,并通过以下方式之一其内容提供给模块:

  • 将文档内容传递给.fromString()
  • 将可读流传递给.fromStream()
  • 通过管道将可读流传输到.parse()

request模块提供了一种从 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);
Run Code Online (Sandbox Code Playgroud)

  • 因为“request”已被弃用,所以我开始了解如何与替代方案相处。我发现了这个:/sf/answers/4618367911/ 引用了这个:https://philna.sh/blog/2020/08/06/how-to-stream-file-downloads-in- Node-js-with-got/. 我将其与此结合起来:https://c2fo.github.io/fast-csv/docs/parsing/methods (2认同)