将casper javascript数据插入CSV文件

时间:2016-03-10 21:49:34

标签: javascript phantomjs casperjs

我想将数据从casper JS传递到我目前正在使用的CSV文件

fs = require('fs');
fs.write('test.csv', "name, title", "a");
fs.write('test.csv', name.trim()+","+title.trim(), "a");

这是一个循环,所以有很多记录

但是打印到CSV文件时没有插入新行。它目前写得像这样,我只想在这个

上有两列
Name    Title
name1   name1    name2   title2    name3   title3

2 个答案:

答案 0 :(得分:5)

添加换行符

fs.write('test.csv', name.trim()+","+title.trim()+"\n", "a");

CSV会有所不同,但通常都有四个特殊字符

  • 分隔符(逗号)
  • 转义字符(通常为\,用于在数据中使用时转义其他特殊字符
  • 行分隔符(通常为\n,换行符),
  • 包装器,(通常引用包围每个值)

所以,如果你真的想要一个合适的CSV,你会做这样的事情。

function escapeCSVData(text){
    text = text.
        replace("\", "\\,"). // escape any escape chars
        replace(",", "\,"); // escape commas
    return '"'+text+'"'; // add quotes
}

fs.write('test.csv', escapeCSVData(name.trim())+","+escapeCSVData(title.trim())+"\n", "a");

我没有测试上面的内容,但这应该对你有用。

修改

我刚刚了解到逗号只是引用而不是转义,因此该函数只是看起来像这样......

function escapeCSVData(text){
    return '"'+text+'"'; // add quotes
}

答案 1 :(得分:2)

每次写入后添加换行符

fs.write('test.csv', "name, title\n", "a");

修改

请注意,虽然这可以解决您的新行(行)问题,但CSV不仅仅是在条目之间添加逗号。如果您的任何数据包含逗号,则需要将其转义。

https://en.wikipedia.org/wiki/Comma-separated_values

有一些要注意的库,例如https://github.com/wdavidw/node-csv#readme - 但如果您完全了解数据的行为方式,则可以继续使用您的解决方案。