格式化木偶输出以进行CSV导出

时间:2018-11-09 23:26:01

标签: javascript node.js puppeteer

我编写了一个Puppeteer脚本,该脚本从网站上抓取文本(这是一个显示服务器日志文件的GUI,它是Squarespace网站,因此这是我访问日志文件的唯一方法)。

这是各行在GUI中的显示方式: enter image description here

脚本会读取此内容(及其下一行),并将其当前输出到console.log()。

上面的记录如下:

11/9/2018 at 12:21:44pm70.119.157.106AboutHostname:70.119.157.106Location:Carrollton, Texas, United StatesTags:-Referrer:www.kingspointcove.com/Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.77 Safari/537.36

然后将它们端对端放置在输出中,像这样一个巨大的块:

11/9/2018 at 12:21:44pm70.119.157.106AboutHostname:70.119.157.106Location:Carrollton, Texas, United StatesTags:-Referrer:www.kingspointcove.com/Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.77 Safari/537.3611/9/2018 at 12:21:33pm70.119.157.106HomesitesHostname:70.119.157.106Location:Carrollton, Texas, United StatesTags:-Referrer:www.kingspointcove.com/about/Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.77 Safari/537.3611/9/2018 at 12:21:26pm70.119.157.106AboutHostname:70.119.157.106Location:Carrollton, Texas, United StatesTags:-Referrer:www.kingspointcove.com/Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.77 Safari/537.3611/9/2018 at 12:21:15pm70.119.157.106HomeHostname:70.119.157.106Location:Carrollton, Texas, United StatesTags:-Referrer:-Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.77 Safari/537.36

我现在正在尝试找出如何将其写入CSV而不是使用console.log(textContent);终端的步骤。

将其写入CSV的最佳方法是什么?

(以下步骤将解析所有这些内容,但是...婴儿步骤...)

1 个答案:

答案 0 :(得分:0)

您可以使用类似csv-stringify的模块,将数组的数组转换为csv。

var stringify = require('csv-stringify');

var input = [] 
var line = logLine.split(",");
input.push(line);

stringify(input, function(err, output){
  fs.writeFile("output.csv", output);
});

建议使用模块,因为它可以处理特殊的情况,在csv字段中您可能会遇到诸如,"这样的字符。

但是您也可以不使用任何模块,CSV是一种非常简单的格式(除了那些特殊情况),因此,如果您可以通过,连接所有值并使用fs.writeFilefs.appendFile将它们写到输出中。