Cheerio-如何从每个dt行获取相应的dd标签



对Cheerio有一些问题,并找到正确的语法来解决我的问题。

<section class="panel">
<dl class="definition-list definition-list--inline">
<dt>Sektor</dt>
<dd>Privat</dd>
<dt>Sted</dt>
<dd>Øvre Banegate 28, 4014 Stavanger</dd>
<dt>Bransje</dt>
<dd>Arkitektur, areal og interiør,</dd>
<dd>Bygg og anlegg,</dd>
<dd>Konsulent og rådgivning</dd>
<dt>Stillingsfunksjon</dt>
<dd>Arkitekt og planlegging / Arealplanlegger,</dd>
<dd>Arkitekt og planlegging / Arkitekt,</dd>
<dd>Arkitekt og planlegging</dd>
</dl>
</section>

我需要找到正确的语法来获得正确dt之后的dd。我和Puppeteer做对了,但我没能和Cheerio做对。到目前为止,我已经完成了

$('body > main > div > div.grid > div.grid__unit.u-r-size2of3 > div > section:nth-child(9) > dl dd').each(function(i, elem) {
const titleNode = $(elem);
const titleText = titleNode.text();

titleList5.push(titleText);
});

感谢您的帮助:(

为每个<dt>生成一个具有<dd>s数组的Map。

const map = new Map();
let group;
$('.panel dl.definition-list').children().each((i, elem) => {
switch (elem.nodeName.toLowerCase()) {
case "dt":
// start a list for this <dt>
map.set(elem, group = []);
break;
case "dd":
// add <dd> to the list for the current <dt>; if there is one.
group?.push(elem);
break;
default:
// just in case; 
// anyways, where would <dd>s belong that are after something else than a <dt>?
// ignore them
group = null;
}
});
console.log(...map.entries());
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<section class="panel">
<dl class="definition-list definition-list--inline">
<dt>Sektor</dt>
<dd>Privat</dd>
<dt>Sted</dt>
<dd>Øvre Banegate 28, 4014 Stavanger</dd>
<dt>Bransje</dt>
<dd>Arkitektur, areal og interiør,</dd>
<dd>Bygg og anlegg,</dd>
<dd>Konsulent og rådgivning</dd>
<dt>Stillingsfunksjon</dt>
<dd>Arkitekt og planlegging / Arealplanlegger,</dd>
<dd>Arkitekt og planlegging / Arkitekt,</dd>
<dd>Arkitekt og planlegging</dd>
</dl>
</section>

使用nextUntil,因为有不止一个,而且它们是兄弟姐妹:

let data = $('dt').get().reduce((acc, dt, i) => {
let key = $(dt).text()
let value = $(dt).nextUntil('dt').get().map(dl => $(dl).text())
acc[key] = value
return acc
}, {})

最新更新