Javascript Puppeter:将返回结果与文本文件进行比较
我有一段代码,现在正在抓取web并返回结果(消息和用户名): 由于上面的代码是对一个动态变化的网站的抓取,所以我试图实现的是避免返回重复的消息 我认为可行的方法之一是: 创建一个.txt文件,其中将存储以前的结果 因此,每当检索到新数据时,在返回之前,它都会将新的“message”结果与.txt“message”结果进行比较,如果是相同的数据,则会返回一条空消息:Javascript Puppeter:将返回结果与文本文件进行比较,javascript,node.js,puppeteer,Javascript,Node.js,Puppeteer,我有一段代码,现在正在抓取web并返回结果(消息和用户名): 由于上面的代码是对一个动态变化的网站的抓取,所以我试图实现的是避免返回重复的消息 我认为可行的方法之一是: 创建一个.txt文件,其中将存储以前的结果 因此,每当检索到新数据时,在返回之前,它都会将新的“message”结果与.txt“message”结果进行比较,如果是相同的数据,则会返回一条空消息: { message: '', username: 'John' } 但是,如果消息数据是唯一的,它将像通常一样返回数据: { me
{ message: '', username: 'John' }
但是,如果消息数据是唯一的,它将像通常一样返回数据:
{ message: 'message text', username: 'John' }
并用该数据更新.txt文件(以便下次可以再次与新数据进行比较)
因此,基本上,在返回(记录)终端中的数据之前,使用.txt文件进行比较
我的问题是:这个过程可能吗
如果是,任何线索或帮助将不胜感激
我不是一个编码员,我希望我能说清楚
谢谢。我建议您使用文本而不是纯文本-这将使所有检查更容易
data.json
。文件必须只包含两个花括号:[]
。它将为启动器指定一个空对象
const{readFileSync,writeFileSync}=require('fs');
功能(文字、信息){
返回单词.some(w=>message.includes(w));
}
异步函数抓取结果(第页){
const username=等待页面。$eval(
'儿童(15).用户名',
(el)=>el.innerText
);
让消息=等待页面。$eval(
“div>div:n个孩子(2)”,
(el)=>el.innerText
);
if(containswarks(['http','https'],message))message='';
constdataarray=JSON.parse(readFileSync('./data.JSON','utf8');
if(dataArray.includes(消息)){
信息=“”;
}否则{
推送(消息);
writeFileSync('./data.json',json.stringify(dataArray));
}
返回{消息,用户名};
};
module.exports=grabResult;
hey vsemozhebuti:)我已尝试运行脚本,但出现错误:dataObject[username]??=[];^^^语法错误:意外标记“??=”
。如果我们能解决这个问题,那将是非常棒的,我们已经为此奋斗了一个月……也许这会有所帮助。完整错误截图:@robert0 Thanx)祝所有项目好运)@robert0更简单。重新创建JSON文件,但不要将{}
,而是将[]
放入其中(这将意味着一个空数组)。我已经更新了代码。非常感谢!!
{ message: 'message text', username: 'John' }