获取保留任何文本装饰样式的文本



目前使用Cheerio我可以得到我需要的文本,但我也想保留笔划文本。(如果更容易的话,我可以把~~字符绕起来,因为文本最终会在不和谐嵌入中结束)

我的当前代码如下:

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

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

const $ = cheerio.load(body);
const titleList = [];

const wikiTab = $('#wiki-tab-0-6 > p');

wikiTab.each((i, title) => {
const titleNode = $(title);
console.log(titleNode.find("span").attr("style"));
const titleText = titleNode.text();

titleList.push(titleText);
});
}

scrapeInformation();

我期望的文本与划线是:

艺术家音乐家,"黑桃屋"联合创始人;摇滚乐队,对SCP-952的创造负有部分责任。在两次自杀未遂后被拘留,编号D-952。失踪,推定死亡。

参考网址:https://scp-wiki.wikidot.com/personnel-and-character-dossier (d类标签)

一些来自网站的HTML:

<div id="wiki-tab-0-6" style="display: block;">
<p>
<strong>D-952 (formerly Veronica Fitzroy):</strong> Anartist musician, co-founder of the "House of Spades"rock band, partially responsible for the creation of <span style="text-decoration: line-through;">In custody following two failed suicide attempts, designated D-952.</span> Missing, presumed deceased.
</p>
</div>

任何能加深我知识的文档或文章都将不胜感激。

经过一些更改和测试,我创建了下面的解决方案:

wikiTab.each((i, title) => {
const titleNode = $(title);
let titleText = titleNode.text();
if (titleNode.find("span").attr("style")) {
const span = $(titleNode.find("span"));
const node = $(span);
const replace = "~~" + node.text() + "~~";
titleText = titleText.replace(node.text(), replace);
}
titleList.push(titleText);
});

我所做的是检查如果titleNode有一个span元素的样式属性,然后做了一些我真的不理解的东西,然后用文本替换部分已经获得的文本,这将是与不和谐兼容的。

任何可以提供建议、文章和文档的评论都将非常感谢,这样我就可以了解我实际在做什么。

最新更新