Cheerio:用标签循环遍历子元素

3

我试图循环遍历一个标签的子元素,并且希望保留它们各自的标签。例如:

<div class='main'>
    <p>First p</p>
    <div class='1'>Div 1</div>
    <div class='2'>Div2 <p>Another P</p></div>
</div>

我希望能够像下面这样遍历子元素:
<p>First p</p>
<div class='1'>Div 1</div>
<div class='2'>Div2 <p>Another P</p></div>

我正在尝试的代码如下:

const block = body.find('div.main')
const children = block.children().each((i, el) => {
   console.log("===")
   console.log($(el).html()) //Also tried $(this).html(), but returns null
})

结果:

===
First p
===
Div 1
===
Div2 <p>Another P</p>

但是结果给了我每个子元素内部的所有内容,这不是我想要的。我希望保留它们各自的<p><div>标签。

其他尝试使用outerHTML的方法似乎都不起作用,即它们都返回了undefined。我尝试过以下方法:

console.log($(el).prop('outerHTML'));
console.log($(el).outerHTML);
console.log($(el)[0].outerHTML);

尝试使用“childNodes”代替“children”,并过滤掉不需要的节点。 - Lavneesh Chandna
1个回答

2
我使用cheerio.html($(el))来解决问题,这在他们的文档这里中有说明。这将获得与outerHTML非常相似的结果。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接