NodeJS 如何根据后续元素将文本拆分为数组索引

pxiryf3j  于 2022-11-22  发布在  Node.js
关注(0)|答案(1)|浏览(125)

目前,我正试图从一个网页上抓取信息,以便在以下站点的不和谐机器人中使用:https://scp-wiki.wikidot.com/personnel-and-character-dossier(“代理”选项卡)
我还没有使用太多Cheerio库,在一篇文章的帮助下编写了我目前的代码。

const fs = require('fs');
const cheerio = require('cheerio');
const fetch = (...args) => import('node-fetch').then(({default: fetch}) => fetch(...args));

async function test() {
    const response = await fetch('https://scp-wiki.wikidot.com/personnel-and-character-dossier');
    const body = await response.text();

    // parse the html text and extract titles
    const $ = cheerio.load(body);
    const titleList = [];

    // wiki-tab-0-2 is id of Agents tab in dossier
    // using CSS selector  
    $('#wiki-tab-0-2').each((i, title) => {
      const titleNode = $(title);
      const titleText = titleNode.text();
      
      titleList.push(titleText);
    });

    console.log(titleList);
 }

test()

我想做的是将文本拆分为单独的索引,该索引中的文本将位于前一个元素和后一个元素之间。
但我不知道该怎么做。
任何额外的文件,资源或建议,可以进一步我的知识将不胜感激。
预期的输出将是“Active Foundation Field Agents.”文本位于第一个索引中,第二个索引是关于Agent绿色的所有文本,第三个索引是关于Agent Travis Kazmarek的所有文本,依此类推。

titleList["Active Foundation Field Agents.", "Agent Green", "Agent Travis Kazmarek"]
e5nqia27

e5nqia271#

根据您的编辑,并在查看页面后,我认为您希望以#wiki-tab-0-2 > p为目标,而不是#wiki-tab-0-2

// wiki-tab-0-2 is id of Agents tab in dossier
// using CSS selector
$('#wiki-tab-0-2 > p').each((i, title) => {
    const titleNode = $(title);
    const titleText = titleNode.text();

    titleList.push(titleText);
});

相关问题