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

使用Cheeriojs提取第二个select的option文本与属性的问题排查

问题排查与修正

你的代码存在两个核心问题:

  • each()方法不会返回回调里创建的对象数组,它仅负责遍历元素,返回的仍是原Cheerio DOM集合,所以你最终拿到的不是目标数据数组
  • 选择器逻辑不严谨:先获取所有select的option再slice(2),完全依赖第一个select的option数量固定为2,一旦数量变化就会出错,应该直接定位第二个select

修正后的代码

// 精准定位第二个select(索引从0开始,第二个对应eq(1)),再获取其下的option
const eps = $('select').eq(1)
  .find('option')
  .map((_, op) => ({
    ep: $(op).text().trim(), // 加trim()去除文本前后空白
    url: $(op).attr('value'),
    select: 1
  }))
  .get(); // 将Cheerio集合转为普通JS数组

console.log(eps);

关键说明

  1. eq(1):直接选中第二个<select>元素,避免依赖第一个select的option数量
  2. map():和each()不同,map()会收集回调返回的对象,生成新的Cheerio集合
  3. get():把Cheerio集合转换成标准JavaScript数组,得到预期的对象数组

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 19:34:57