用Axios抓取后如何将对象推送到JSON文件?

如何解决用Axios抓取后如何将对象推送到JSON文件?

因此,我设法从URL获得了我想要的一切。现在,我想将该对象写入“ verified.json”文件中。问题在于,只有我对象中的最后一项被写入那里,而另一项却被写入,表明它显然在某个地方坏了。

我是这个菜鸟,所以对解决方案的解释将不胜感激。

const axios = require("axios");
const cheerio = require("cheerio");
const fs = require('fs');
const colors = require("colors");
prodArray = {};

axios.get("https://arstechnica.com/gadgets/").then(urlResponse => {
  const $ = cheerio.load(urlResponse.data);

  $('li.article').each((i,elem) => {

    const link = $(elem).find("a.overlay").attr("href");
    //console.log(link.cyan);
    
    const header = $(elem).find("h2").text();
    //console.log(header);

    const author = $(elem).find("p.byline").find("a").text();
    //console.log(author);
    console.log("---------------\n".red);

    data = {
      "Link: ": link,"Title: ": header,"Author: ": author
    }

    let dataStringfy = JSON.stringify(data);

    let test = fs.writeFile("verified.json",dataStringfy,function (err) {
      if (err) {
        console.log(err)
      } else {
        console.log("Success")
      }
    })
    console.log(test);
  })
})


解决方法

您可以在写入文件之前先插入数组

var datas = [];

$('li.article').each((i,elem) => {

    const link = $(elem).find("a.overlay").attr("href");
    //console.log(link.cyan);
    
    const header = $(elem).find("h2").text();
    //console.log(header);

    const author = $(elem).find("p.byline").find("a").text();
    //console.log(author);
    console.log("---------------\n".red);

    data = {
      "Link: ": link,"Title: ": header,"Author: ": author
    }

    datas.push(data);

});

let dataStringfy = JSON.stringify(datas);

let test = fs.writeFile("verified.json",dataStringfy,function (err) {
      if (err) {
        console.log(err)
      } else {
        console.log("Success")
      }
    })
,

我认为这样效果更好

const arr = []
$('li.article').each((i,elem) => {
  const link = $(elem).find("a.overlay").attr("href");
  const header = $(elem).find("h2").text();
  const author = $(elem).find("p.byline").find("a").text();
  arr.push({
    "Link": link,"Title": header,"Author": author
  })
})
let dataStringfy = JSON.stringify(arr);
console.log(dataStringfy)

const $doc = $($("xmp").text());
const arr = []
$('li.article',$doc).each((i,"Author": author
  })
})
let dataStringfy = JSON.stringify(arr);
console.log(dataStringfy)
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<xmp><!DOCTYPE html>
<html lang="en-us">
<head>
<title>Tech | Ars Technica</title>
    
</head>
<body class="archive category category-gadgets category-22 grid-view light blog-us">

        
  <main id="main" class="content-wrapper">
<h1 id="archive-head" class="archive-title">
        <span class="archive-name">Tech</span>
        <span class="divider"> / </span>
    <span class="archive-desc">Product News &amp; Reviews</span>
        </h1>
  
  <section class="with-xrail">
    <!-- Horizontal listing -->
    <div class="listing listing-latest ">
      <ol>
              
<li class="tease article " data-post-id="1710163">
  
  <a class="overlay" href="https://arstechnica.com/gadgets/2020/09/roku-starts-taking-orders-for-an-updated-ultra-player-and-a-new-soundbar/" tabindex="-1" role="presentation" aria-hidden="true"></a>
    <figure>
    <div class="listing listing-small" style="background-image:url('https://cdn.arstechnica.net/wp-content/uploads/2020/09/http-image.roku_.com-w-rapid-images-pdp-carousel-items-993bcf95-553f-4000-b795-981bed77c3cc-1-150x150.png');"></div>
        <a class="overlay" href="https://arstechnica.com/gadgets/2020/09/roku-starts-taking-orders-for-an-updated-ultra-player-and-a-new-soundbar/" tabindex="-1" role="presentation" aria-hidden="true"></a>
          </figure>
  <header>
        <h2><a href="https://arstechnica.com/gadgets/2020/09/roku-starts-taking-orders-for-an-updated-ultra-player-and-a-new-soundbar/">Roku’s big announcements today: A new Ultra player,soundbar,and AirPlay 2 support</a></h2>
    <p class="excerpt">Roku finally supports Dolby Vision in the new Ultra player.</p>
    
  <p class="byline" itemprop="author creator" itemscope itemtype="http://schema.org/Person">
      <a itemprop="url" href="https://arstechnica.com/author/samuelaxon/"><span itemprop="name">Samuel Axon</span></a>
    –  <time class="date" data-time="1601331587" datetime="2020-09-28T22:19:47+00:00">Sep 28,2020 10:19 pm UTC</time>
  </p>

  </header>
    <footer>
        <div class="comments-hotness ">
  <a title="40 posters participating" class="comment-count icon-comment-bubble-up" href="https://arstechnica.com/gadgets/2020/09/roku-starts-taking-orders-for-an-updated-ultra-player-and-a-new-soundbar/?comments=1">
    
  <span class="comment-count-number">53</span>
  <span class="visually-hidden"> comments with 40 posters participating</span>
  </a>
    </div>

  </footer>
  
</li>
 
              
<li class="tease article " data-post-id="1710267">
  
  <a class="overlay" href="https://arstechnica.com/gaming/2020/09/apple-vs-epic-hearing-previews-a-long-hard-fought-trial-to-come/" tabindex="-1" role="presentation" aria-hidden="true"></a>
    <figure>
    <div class="listing listing-small" style="background-image:url('https://cdn.arstechnica.net/wp-content/uploads/2018/07/fortnite-150x150.jpeg');"></div>
        <a class="overlay" href="https://arstechnica.com/gaming/2020/09/apple-vs-epic-hearing-previews-a-long-hard-fought-trial-to-come/" tabindex="-1" role="presentation" aria-hidden="true"></a>
          </figure>
  <header>
        <h2><a href="https://arstechnica.com/gaming/2020/09/apple-vs-epic-hearing-previews-a-long-hard-fought-trial-to-come/">Apple vs. Epic hearing previews a long,hard-fought trial to come</a></h2>
    <p class="excerpt">Judge Rogers has strong words for both sides in the iOS <em>Fortnite</em> battle.</p>
    
  <p class="byline" itemprop="author creator" itemscope itemtype="http://schema.org/Person">
      <a itemprop="url" href="https://arstechnica.com/author/kyle-orland/"><span itemprop="name">Kyle Orland</span></a>
    –  <time class="date" data-time="1601330128" datetime="2020-09-28T21:55:28+00:00">Sep 28,2020 9:55 pm UTC</time>
  </p>

  </header>
    <footer>
        <div class="comments-hotness ">
  <a title="94 posters participating,including story author" class="comment-count icon-comment-bubble-up" href="https://arstechnica.com/gaming/2020/09/apple-vs-epic-hearing-previews-a-long-hard-fought-trial-to-come/?comments=1">
    
  <span class="comment-count-number">190</span>
  <span class="visually-hidden"> comments with 94 posters participating,including story author</span>
  </a>
    </div>

  </footer>
  
</li>
 
              
<li class="tease article " data-post-id="1710247">
  
  <a class="overlay" href="https://arstechnica.com/information-technology/2020/09/joker-the-malware-that-signs-you-up-for-pricey-services-floods-android-markets/" tabindex="-1" role="presentation" aria-hidden="true"></a>
    <figure>
    <div class="listing listing-small" style="background-image:url('https://cdn.arstechnica.net/wp-content/uploads/2018/01/android-malware-150x150.jpg');"></div>
        <a class="overlay" href="https://arstechnica.com/information-technology/2020/09/joker-the-malware-that-signs-you-up-for-pricey-services-floods-android-markets/" tabindex="-1" role="presentation" aria-hidden="true"></a>
          </figure>
  <header>
        <h2><a href="https://arstechnica.com/information-technology/2020/09/joker-the-malware-that-signs-you-up-for-pricey-services-floods-android-markets/">“Joker”—the malware that signs you up for pricey services—floods Android markets</a></h2>
    <p class="excerpt">Dozens of malicious apps,some available in Play,found in the past couple months.</p>
    
  <p class="byline" itemprop="author creator" itemscope itemtype="http://schema.org/Person">
      <a itemprop="url" href="https://arstechnica.com/author/dan-goodin/"><span itemprop="name">Dan Goodin</span></a>
    –  <time class="date" data-time="1601328069" datetime="2020-09-28T21:21:09+00:00">Sep 28,2020 9:21 pm UTC</time>
  </p>

  </header>
    <footer>
        <div class="comments-hotness ">
  <a title="37 posters participating" class="comment-count icon-comment-bubble-up" href="https://arstechnica.com/information-technology/2020/09/joker-the-malware-that-signs-you-up-for-pricey-services-floods-android-markets/?comments=1">
    
  <span class="comment-count-number">68</span>
  <span class="visually-hidden"> comments with 37 posters participating</span>
  </a>
    </div>

  </footer>
  
</li>
 
              
<li class="tease article " data-post-id="1710179">
  
  <a class="overlay" href="https://arstechnica.com/gadgets/2020/09/amazon-prime-day-was-just-announced-and-some-deals-have-already-started/" tabindex="-1" role="presentation" aria-hidden="true"></a>
    <figure>
    <div class="listing listing-small" style="background-image:url('https://cdn.arstechnica.net/wp-content/uploads/2020/09/PR_Hero_Gift_US_en-150x150.jpg');"></div>
        <a class="overlay" href="https://arstechnica.com/gadgets/2020/09/amazon-prime-day-was-just-announced-and-some-deals-have-already-started/" tabindex="-1" role="presentation" aria-hidden="true"></a>
          </figure>
  <header>
        <h2><a href="https://arstechnica.com/gadgets/2020/09/amazon-prime-day-was-just-announced-and-some-deals-have-already-started/">Amazon Prime Day was just announced,and some deals have already started</a></h2>
    <p class="excerpt">Did you really think Amazon was going to let 2020 slip by without a Prime Day?</p>
    
  <p class="byline" itemprop="author creator" itemscope itemtype="http://schema.org/Person">
      <a itemprop="url" href="https://arstechnica.com/author/coreygaskin/"><span itemprop="name">Corey Gaskin</span></a>
    –  <time class="date" data-time="1601318425" datetime="2020-09-28T18:40:25+00:00">Sep 28,2020 6:40 pm UTC</time>
  </p>

  </header>
    <footer>
        <div class="comments-hotness ">
  <a title="45 posters participating" class="comment-count icon-comment-bubble-up" href="https://arstechnica.com/gadgets/2020/09/amazon-prime-day-was-just-announced-and-some-deals-have-already-started/?comments=1">
    
  <span class="comment-count-number">58</span>
  <span class="visually-hidden"> comments with 45 posters participating</span>
  </a>
    </div>

  </footer>
  
</li>
 
              
<li class="tease article " data-post-id="1707888">
  
  <a class="overlay" href="https://arstechnica.com/gadgets/2020/09/youtube-celebrates-deaf-awareness-week-by-killing-crowd-sourced-captions/" tabindex="-1" role="presentation" aria-hidden="true"></a>
    <figure>
    <div class="listing listing-small" style="background-image:url('https://cdn.arstechnica.net/wp-content/uploads/2015/05/youtube-150x150.jpg');"></div>
        <a class="overlay" href="https://arstechnica.com/gadgets/2020/09/youtube-celebrates-deaf-awareness-week-by-killing-crowd-sourced-captions/" tabindex="-1" role="presentation" aria-hidden="true"></a>
          </figure>
  <header>
        <h2><a href="https://arstechnica.com/gadgets/2020/09/youtube-celebrates-deaf-awareness-week-by-killing-crowd-sourced-captions/">YouTube celebrates Deaf Awareness Week by killing crowd-sourced captions</a></h2>
    <p class="excerpt">500,000 signatures aren't stopping YouTube from shutting down accessibility feature.</p>
    
  <p class="byline" itemprop="author creator" itemscope itemtype="http://schema.org/Person">
      <a itemprop="url" href="https://arstechnica.com/author/ronamadeo/"><span itemprop="name">Ron Amadeo</span></a>
    –  <time class="date" data-time="1601316664" datetime="2020-09-28T18:11:04+00:00">Sep 28,2020 6:11 pm UTC</time>
  </p>

  </header>
    <footer>
        <div class="comments-hotness ">
  <a title="85 posters participating" class="comment-count icon-comment-bubble-up" href="https://arstechnica.com/gadgets/2020/09/youtube-celebrates-deaf-awareness-week-by-killing-crowd-sourced-captions/?comments=1">
    
  <span class="comment-count-number">106</span>
  <span class="visually-hidden"> comments with 85 posters participating</span>
  </a>
    </div>

  </footer>
  
</li>
 
      </ul> 
</body>
</html></xmp>

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


依赖报错 idea导入项目后依赖报错,解决方案:https://blog.csdn.net/weixin_42420249/article/details/81191861 依赖版本报错:更换其他版本 无法下载依赖可参考:https://blog.csdn.net/weixin_42628809/a
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下 2021-12-03 13:33:33.927 ERROR 7228 [ main] o.s.b.d.LoggingFailureAnalysisReporter : *************************** APPL
错误1:gradle项目控制台输出为乱码 # 解决方案:https://blog.csdn.net/weixin_43501566/article/details/112482302 # 在gradle-wrapper.properties 添加以下内容 org.gradle.jvmargs=-Df
错误还原:在查询的过程中,传入的workType为0时,该条件不起作用 &lt;select id=&quot;xxx&quot;&gt; SELECT di.id, di.name, di.work_type, di.updated... &lt;where&gt; &lt;if test=&qu
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct redisServer’没有名为‘server_cpulist’的成员 redisSetCpuAffinity(server.server_cpulist); ^ server.c: 在函数‘hasActiveC
解决方案1 1、改项目中.idea/workspace.xml配置文件,增加dynamic.classpath参数 2、搜索PropertiesComponent,添加如下 &lt;property name=&quot;dynamic.classpath&quot; value=&quot;tru
删除根组件app.vue中的默认代码后报错:Module Error (from ./node_modules/eslint-loader/index.js): 解决方案:关闭ESlint代码检测,在项目根目录创建vue.config.js,在文件中添加 module.exports = { lin
查看spark默认的python版本 [root@master day27]# pyspark /home/software/spark-2.3.4-bin-hadoop2.7/conf/spark-env.sh: line 2: /usr/local/hadoop/bin/hadoop: No s
使用本地python环境可以成功执行 import pandas as pd import matplotlib.pyplot as plt # 设置字体 plt.rcParams[&#39;font.sans-serif&#39;] = [&#39;SimHei&#39;] # 能正确显示负号 p
错误1:Request method ‘DELETE‘ not supported 错误还原:controller层有一个接口,访问该接口时报错:Request method ‘DELETE‘ not supported 错误原因:没有接收到前端传入的参数,修改为如下 参考 错误2:cannot r
错误1:启动docker镜像时报错:Error response from daemon: driver failed programming external connectivity on endpoint quirky_allen 解决方法:重启docker -&gt; systemctl r
错误1:private field ‘xxx‘ is never assigned 按Altʾnter快捷键,选择第2项 参考:https://blog.csdn.net/shi_hong_fei_hei/article/details/88814070 错误2:启动时报错,不能找到主启动类 #
报错如下,通过源不能下载,最后警告pip需升级版本 Requirement already satisfied: pip in c:\users\ychen\appdata\local\programs\python\python310\lib\site-packages (22.0.4) Coll
错误1:maven打包报错 错误还原:使用maven打包项目时报错如下 [ERROR] Failed to execute goal org.apache.maven.plugins:maven-resources-plugin:3.2.0:resources (default-resources)
错误1:服务调用时报错 服务消费者模块assess通过openFeign调用服务提供者模块hires 如下为服务提供者模块hires的控制层接口 @RestController @RequestMapping(&quot;/hires&quot;) public class FeignControl
错误1:运行项目后报如下错误 解决方案 报错2:Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.8.1:compile (default-compile) on project sb 解决方案:在pom.
参考 错误原因 过滤器或拦截器在生效时,redisTemplate还没有注入 解决方案:在注入容器时就生效 @Component //项目运行时就注入Spring容器 public class RedisBean { @Resource private RedisTemplate&lt;String
使用vite构建项目报错 C:\Users\ychen\work&gt;npm init @vitejs/app @vitejs/create-app is deprecated, use npm init vite instead C:\Users\ychen\AppData\Local\npm-