首页 > 解决方案 > Cheerio js成对获取元素

问题描述

我正在尝试获取一对元素,例如我有这个文本

<div id="special">
 <p>not to take</p>
 <p> no to take 2</p>
 <h3> h3 not take<h3>
<h2>
title1
</h2>
<p>
description1
</p>

<h2>
title2
</h2>
<p>
description2
</p>

<h2>
title3
</h2>
<p>
description4
</p>
</div>

所以我想成对得到 h2 和 p 来得到 [{h2:title1,p:description1},{h2:title2,p:description3}] 的数组,我不想拿 p (在 h2 - p“不采取”),只是 h2 和 p 我试图做的是

  let title2 = $('#special').find('h2').each((index,element)=>{
                let title = $(element).text()
                let p = $(element).find('p')
                console.log('title:',title)
                console.log('p:',p)

            })

但它没有找到 p 元素

标签: javascriptcheerio

解决方案


您目前正在p元素内找到该元素,因为.find()检查子级,但在您的情况下,<p>标签是兄弟姐妹。.next()对于您的情况,如果您确定下一个兄弟是<p>具有描述的标签,则必须改用方法。检查以下代码:

let title2 = $('#special').find('h2').each((index, element)=>{
                let title = $(element).text()
                let p = $(element).next()
                console.log('title:',title)
                console.log('p:',p)

            })

推荐阅读