gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 21:17:21 25 4
gpt4 key购买 nike

我正在尝试使用 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...

在浏览器中阅读时出现如下错误:

"Error: Parse error on line 1:
...key-steam-arma-3/"}][{"Name":"HearthSton
-----------------------^
Expecting 'EOF', '}', ',', ']'

看完this similar question的答案后我意识到我不能将对象附加到现有对象,因为在 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);

});

关于javascript - 使用 CasperJS 将多个页面的结果保存到一个 JSON 文件中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45554731/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com