Javascript 使用CasperJS将多个页面的结果保存到一个JSON文件中

Javascript 使用CasperJS将多个页面的结果保存到一个JSON文件中,javascript,json,web-scraping,casperjs,Javascript,Json,Web Scraping,Casperjs,我正试图用CasperJS从一个网站上抓取一些页面,并用结果创建一个JSON文件。但是,我在创建有效的JSON文件时遇到了问题 为每个页面运行的代码的相关示例: casper.then(function(){ var fs = require('fs'); fs.write('results.json', JSON.stringify(result), 'a'); this.echo(JSON.stringify(result, undefined, 4)); casper.then(ge

我正试图用CasperJS从一个网站上抓取一些页面,并用结果创建一个JSON文件。但是,我在创建有效的JSON文件时遇到了问题

为每个页面运行的代码的相关示例:

casper.then(function(){

var fs = require('fs');

fs.write('results.json', JSON.stringify(result), 'a');
this.echo(JSON.stringify(result, undefined, 4));

casper.then(getNextPage);

});  
这将为每个页面创建一个JSON文件,该文件以“[”开头,以“]”结尾,如下所示:

[{"Name":"Name1","Price":"10"},(...),{"Name":"Name45","Price":"20"}][{"Name":"Name46","Price":"4.20"}, etc...
当我在浏览器中读取时,出现以下错误:

在阅读了来自的答案后,我意识到我不能将一个对象附加到一个现有对象,因为在JSON中,必须有一个顶级项。然而,即使我知道错误来自何处,我也无法找到解决方案(本文中的解决方案不适用于我,因为我的JSON输出是不同的)


在过去的几个小时里,我一直在挠头,试图想出一个解决办法,但没有成功。我尝试将流的编码更改为UTF-8,但这也不起作用。如果这是一个愚蠢的问题,我很抱歉,因为我是CasperJS和javascript新手。如果有人能给我指出正确的方向,我将不胜感激

您可以创建一个全局变量,并将每个结果附加到该变量。然后保存它

var fs = require('fs'); // better to require it once
var results = [];

// ... some code

casper.then(function(){

  results.push(result);

  fs.write('results.json', JSON.stringify(results));
  this.echo(JSON.stringify(results, undefined, 4));

  casper.then(getNextPage);

}); 

现在,错过了这个简单的解决方案,我感到很愚蠢。谢谢Andrey,这很好:)
var fs = require('fs'); // better to require it once
var results = [];

// ... some code

casper.then(function(){

  results.push(result);

  fs.write('results.json', JSON.stringify(results));
  this.echo(JSON.stringify(results, undefined, 4));

  casper.then(getNextPage);

});