Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/35.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Puppeter:将返回结果与文本文件进行比较_Javascript_Node.js_Puppeteer - Fatal编程技术网

Javascript Puppeter:将返回结果与文本文件进行比较

Javascript Puppeter:将返回结果与文本文件进行比较,javascript,node.js,puppeteer,Javascript,Node.js,Puppeteer,我有一段代码,现在正在抓取web并返回结果(消息和用户名): 由于上面的代码是对一个动态变化的网站的抓取,所以我试图实现的是避免返回重复的消息 我认为可行的方法之一是: 创建一个.txt文件,其中将存储以前的结果 因此,每当检索到新数据时,在返回之前,它都会将新的“message”结果与.txt“message”结果进行比较,如果是相同的数据,则会返回一条空消息: { message: '', username: 'John' } 但是,如果消息数据是唯一的,它将像通常一样返回数据: { me

我有一段代码,现在正在抓取web并返回结果(消息和用户名):

由于上面的代码是对一个动态变化的网站的抓取,所以我试图实现的是避免返回重复的消息

我认为可行的方法之一是:

创建一个.txt文件,其中将存储以前的结果

因此,每当检索到新数据时,在返回之前,它都会将新的“message”结果与.txt“message”结果进行比较,如果是相同的数据,则会返回一条空消息:

{ message: '', username: 'John' }
但是,如果消息数据是唯一的,它将像通常一样返回数据:

{ message: 'message text', username: 'John' }
并用该数据更新.txt文件(以便下次可以再次与新数据进行比较)

因此,基本上,在返回(记录)终端中的数据之前,使用.txt文件进行比较

我的问题是:这个过程可能吗

如果是,任何线索或帮助将不胜感激

我不是一个编码员,我希望我能说清楚

谢谢。

我建议您使用文本而不是纯文本-这将使所有检查更容易

  • 在脚本所在的文件夹中创建一个文件
    data.json
    。文件必须只包含两个花括号:
    []
    。它将为启动器指定一个空对象

  • 您的脚本将使用模块读取文件,并从中生成JS数组。然后它将检查数组是否具有当前消息。如果是,则消息将转换为空字符串。否则,将更新数组并重写文件

  • 下面是一个脚本示例:

    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' }