You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Cheerio或原生JS根据span内容获取父级li的id及data-nume值

实现方案

原生Vanilla JS实现

实现逻辑为遍历匹配类名title的span元素,找到内容为TV的节点后读取其父级li的对应属性:

// 获取所有class为title的span元素
const titleSpans = document.querySelectorAll('span.title');
let targetLi = null;

for (const span of titleSpans) {
  // 修剪首尾空格后匹配文本,避免空白字符影响匹配结果
  if (span.textContent.trim() === 'TV') {
    targetLi = span.parentElement;
    break;
  }
}

if (targetLi) {
  const liId = targetLi.id; // 返回值为option-2
  const dataNume = targetLi.dataset.nume; // 返回值为2
  // 可按需返回对应变量
  console.log('li的id:', liId, 'data-nume值:', dataNume);
}

Cheerio实现

先加载抓取到的HTML内容,再通过选择器定位目标节点即可:

const cheerio = require('cheerio');
// 传入你抓取得到的HTML字符串
const $ = cheerio.load(`<div>
    <ul id="options">
        <li id="option-1" data-nume="1">
            <span class="title">Book</span>
            <span class="site">fnac.com</span>
        </li>
        <li id="option-2" data-nume="2">
            <span class="title">TV</span>
            <span class="site">youtube.com</span>
        </li>
    </ul>
</div>`);

// 基础写法:用contains选择器匹配文本
const $targetLi = $('span.title:contains("TV")').parent('li');
// 严格匹配写法(推荐,避免匹配到包含TV的其他文本,比如"TV显示器"这类内容)
// const $targetLi = $('span.title').filter((_, el) => $(el).text().trim() === 'TV').parent('li');

const liId = $targetLi.attr('id'); // 返回值为option-2
const dataNume = $targetLi.data('nume'); // 返回值为2
console.log('li的id:', liId, 'data-nume值:', dataNume);

内容的提问来源于stack exchange,提问作者Pronicio

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 05:15:03