用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 举报,一经查实,本站将立刻删除。

相关推荐


使用本地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-
参考1 参考2 解决方案 # 点击安装源 协议选择 http:// 路径填写 mirrors.aliyun.com/centos/8.3.2011/BaseOS/x86_64/os URL类型 软件库URL 其他路径 # 版本 7 mirrors.aliyun.com/centos/7/os/x86
报错1 [root@slave1 data_mocker]# kafka-console-consumer.sh --bootstrap-server slave1:9092 --topic topic_db [2023-12-19 18:31:12,770] WARN [Consumer clie
错误1 # 重写数据 hive (edu)&gt; insert overwrite table dwd_trade_cart_add_inc &gt; select data.id, &gt; data.user_id, &gt; data.course_id, &gt; date_format(
错误1 hive (edu)&gt; insert into huanhuan values(1,&#39;haoge&#39;); Query ID = root_20240110071417_fe1517ad-3607-41f4-bdcf-d00b98ac443e Total jobs = 1
报错1:执行到如下就不执行了,没有显示Successfully registered new MBean. [root@slave1 bin]# /usr/local/software/flume-1.9.0/bin/flume-ng agent -n a1 -c /usr/local/softwa
虚拟及没有启动任何服务器查看jps会显示jps,如果没有显示任何东西 [root@slave2 ~]# jps 9647 Jps 解决方案 # 进入/tmp查看 [root@slave1 dfs]# cd /tmp [root@slave1 tmp]# ll 总用量 48 drwxr-xr-x. 2
报错1 hive&gt; show databases; OK Failed with exception java.io.IOException:java.lang.RuntimeException: Error in configuring object Time taken: 0.474 se
报错1 [root@localhost ~]# vim -bash: vim: 未找到命令 安装vim yum -y install vim* # 查看是否安装成功 [root@hadoop01 hadoop]# rpm -qa |grep vim vim-X11-7.4.629-8.el7_9.x
修改hadoop配置 vi /usr/local/software/hadoop-2.9.2/etc/hadoop/yarn-site.xml # 添加如下 &lt;configuration&gt; &lt;property&gt; &lt;name&gt;yarn.nodemanager.res