解析/保存/得到URL以CSV的NodeJS响应

解析/保存/得到URL以CSV的NodeJS响应

问题描述:

我试图让从雅虎金融URL结果:解析/保存/得到URL以CSV的NodeJS响应

http://finance.yahoo.com/d/quotes.csv?s=XOM=sn1yr 返回:

"XOM",4:00pm - <b>83.25`</b>`,2.11,13.42 

我试图存储这些结果在使用Mongoose的数据库中。我有一些代码工作,从现有的CSV文件保存(与不同但相关的内容,你可以看到):

var writer = new csv.CsvWriter(process.stdout); 
    reader.setColumnNames(["Symbol","Company","StockExchange"]); 
    reader.addListener('data', function(data) { 
    console.log(data); 
    var stock = new Stock(data).save(); 
}); 

我试着这样做:

铲运机是一个模块在https://github.com/mape/node-scraper

scraper('http://search.twitter.com/search?q=javascript', function(err, $) { 
if (err) {throw err;} 

$('.msg').each(function() { 
    console.log($(this).text().trim()+'\n'); 
}); 
}); 

,但与Yahoo URL的CSV结果,而把响应到一个单独的CSV文件中发现,被告知我需要以某种方式使用stream.write。我是Node新手,希望得到一些帮助解决这个问题。先谢谢您的帮助!

所以你试图从http://finance.yahoo.com/d/quotes.csv?s=XOM=sn1yr抓取CSV并解析数据,以便将其存储在数据库中?我的图书馆node.io可能会有帮助

require('node.io').scrape(function() { 
    this.get('http://finance.yahoo.com/d/quotes.csv?s=XOM=sn1yr', function(err, data) { 
     var lines = data.split('\n'); 
     for (var line, i = 0, l = lines.length; i < l; i++) { 
      line = this.parseValues(lines[i]); 

      console.log(line); //['XOM, '4:00pm - <b>83.25`</b>`', '2.11', '13.42'] 

      //Do something with your data.. 
     } 
    }); 
}); 
+0

感谢您的代码克里斯!我接近你提供的东西。出于某种原因,返回的内容中有两条换行符。该图书馆看起来不错,易于使用! – JohnAllen 2011-04-03 01:17:52

+0

我必须将++ i添加到for循环才能工作,但我使用的是节点分支0.4。 – MichaelICE 2011-08-11 12:01:53