gpt4 book ai didi

javascript - 用 Cheerio 替换 HTML Node

转载 作者:行者123 更新时间:2023-11-29 23:16:18 29 4
gpt4 key购买 nike

我正在使用 Cheerio JS 来简化一些古老的 HTML 代码并将其转换为 HTML5。除其他事项外,我正在替换一些如下所示的大量标记引号:

要替换的 Node :

<div style="margin:20px; margin-top:5px; ">
<div class="smallfont" style="margin-bottom:2px">Quote:</div>
<table cellpadding="6" cellspacing="0" border="0" width="100%">
<tbody>
<tr>
<td class="alt2" style="border:1px solid #999">
<div>
Originally Posted by <strong>Username</strong>
</div>
<div style="font-style:italic">Lorem ipsum dolor sit amet</div>
</td>
</tr>
</tbody>
</table>
</div>

转换后的输出应该是这样的:

<blockquote>Lorem ipsum dolor sit amet</blockquote>

这是我目前使用的代码:

$(`table[id^='post']`).each( (i, el) => {
// Get the post
let postBody = $(el).find(`div[id^='post_message_']`).html().trim();

// Replace quotes with blockquotes
cheerio.load(postBody)('div[style^="margin:20px; margin-top:5px; "]').each( (i, el) => {
if ($(el).html().trim().startsWith('<div class="smallfont" style="margin-bottom:2px">Quote')) {
let tbody = $(el).find('tbody > tr > td').html();
let quote = $(el).find('tbody > tr > td > div');

if (quote.html() && quote.text().trim().startsWith('Originally Posted by')) {
let replacement = $('<blockquote>Hello</blockquote>');
quote.parent().html().replace(quote.html(), replacement);
}

// Looks all good
console.log($(el).html())
}

postBody = $(el).html();
});
});

最后,针对某些上下文的更多 HTML:

<div id="post_message_123456">
As Username has previously written
<br>
<div style="margin:20px; margin-top:5px; ">
<div class="smallfont" style="margin-bottom:2px">Quote:</div>
<table cellpadding="6" cellspacing="0" border="0" width="100%">
<tbody>
<tr>
<td class="alt2" style="border:1px solid #999">

<div>
Originally Posted by <strong>Username</strong>
</div>
<div style="font-style:italic">Lorem ipsum dolor sit amet</div>
</td>
</tr>
</tbody>
</table>
</div>
<br>
I think he has a point!
<img src="smile-with-sunglasses.gif" />
</div>

替换本身似乎有效,console.log() 语句的输出看起来一切正常。问题出在最后一行,我试图用替换内容替换原始内容。但是,postBody 看起来和以前一样。我做错了什么?

最佳答案

像这样尝试:

let $ = cheerio.load(html)

$('.alt2 div:contains("Originally Posted by")')
.replaceWith('<blockquote>Lorem ipsum dolor sit amet</blockquote>')

console.log($.html())

关于javascript - 用 Cheerio 替换 HTML Node ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52679626/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com