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

从JSON获取的数据无法在浏览器显示及Puppeteer数据处理问题

解决方案

一、提取JSON中的0.887数值

有两种处理方式,按需选择:

1. 爬取阶段直接提取(推荐)

修改Puppeteer代码,在获取元素文本时直接过滤出数字部分,避免后续额外处理:

// index.js爬取逻辑修改
const changeValue = await page.$eval('.tv-symbol-price-quote__change-value', el => {
  // 移除正负号,只保留数字和小数点
  return el.textContent.replace(/[^\d.]/g, '');
});
// 保存处理后的数值到JSON
await fs.promises.writeFile('arreglo.json', JSON.stringify([changeValue]));

修改后生成的arreglo.json内容为["0.887"],可直接使用。

2. 前端读取JSON后处理

如果不想改动爬取代码,在fetch数据后再提取数字:

// 假设已完成fetch请求并拿到响应
const data = await response.json();
// 提取数组第一个元素,过滤非数字内容
const numericValue = data[0].replace(/[^\d.]/g, '');

二、解决fetch数据无法展示到.container的问题

从常见错误点逐一排查修复:

1. 确认fetch路径正确性

确保arreglo.json和HTML文件在同一目录,使用正确的相对路径:

fetch('./arreglo.json') // 开头的./不可省略,保证指向当前目录下的JSON文件
  .then(response => {
    if (!response.ok) throw new Error('请求失败');
    return response.json();
  })

2. 保证DOM加载完成后再操作

将fetch代码放在DOM加载完成的回调中,避免容器元素未创建就执行操作:

document.addEventListener('DOMContentLoaded', async () => {
  try {
    const response = await fetch('./arreglo.json');
    const data = await response.json();
    const container = document.querySelector('.container');
    
    if (!container) {
      console.error('未找到.container元素');
      return;
    }
    
    // 处理数据并插入容器
    const value = data[0].replace(/[^\d.]/g, '');
    container.textContent = `当前变动数值:${value}`;
  } catch (err) {
    console.error('加载数据失败:', err);
  }
});

3. 排查JSON格式错误

打开浏览器控制台(F12)查看报错,如果提示JSON解析失败,检查arreglo.json的格式是否正确(比如引号是否匹配、有无多余逗号)。

4. 确认.container元素存在

在浏览器Elements面板搜索.container,检查元素是否存在、选择器拼写是否正确。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 10:40:32