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

使用Puppeteer(JS)抓取无类名页面:获取红色标记数值方法

如何用Puppeteer获取目标页面红色标记的数值

你需要获取目标页面中红色标记的战斗统计数值(如击杀、死亡类数据),现有Puppeteer代码框架,可通过以下方式补充注释处的代码逻辑:

方案1:批量提取所有统计数值

如果需要一次性获取所有红色标记类的统计项,可通过页面上下文解析容器内的表格行:

// 替换注释处的代码
const statsData = await charts.evaluate(element => {
  const statRows = element.querySelectorAll('tr');
  const result = {};
  statRows.forEach(row => {
    // 获取标签文本(如“击杀”“死亡”)
    const label = row.querySelector('td:first-child')?.textContent.trim();
    // 获取对应的数值(红色标记的部分)
    const value = row.querySelector('td:last-child b')?.textContent.trim();
    if (label && value) {
      result[label] = value;
    }
  });
  return result;
});
console.log('获取到的统计数据:', statsData);

方案2:精准提取单个目标数值

如果只需要某一个特定的数值(比如红色标记的“击杀”数),可以直接定位对应元素:

// 替换注释处的代码,以“击杀”为例
const targetValue = await charts.$eval('tr:has(td:contains("击杀")) td:last-child b', el => el.textContent.trim());
console.log('击杀数值:', targetValue);

代码优化建议

你的原代码循环只处理第一个.BoxContent就终止了,如果目标统计容器确实是第一个,逻辑没问题;如果需要匹配特定的容器,可以调整为直接定位,不用循环:

// 直接定位目标容器,替代原循环逻辑
const targetContainer = await page.$('.BoxContent');
if (targetContainer) {
  const stats = await targetContainer.evaluate(el => {
    const rows = el.querySelectorAll('tr');
    const data = {};
    rows.forEach(row => {
      const labelCell = row.querySelector('td:nth-child(1)');
      const valueCell = row.querySelector('td:nth-child(2) b');
      if (labelCell && valueCell) {
        data[labelCell.textContent.trim()] = valueCell.textContent.trim();
      }
    });
    return data;
  });
  console.log('统计数据:', stats);
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 01:41:17