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

如何使用NodeJS Cheerio爬取维基百科S&P500成分股的股票代码列

问题原因及修复方案

核心错误点

  • 选择器逻辑错误:原选择器仅匹配表格第一行的全部单元格,未覆盖所有成分股行;部分场景下Cheerio不会识别页面自动生成的tbody标签,无需显式声明tbody
  • 遍历逻辑错位:需要遍历所有成分股行提取首列内容,而非遍历单个行的所有子元素
  • 冗余依赖:代码中引入的express、http相关依赖未被使用,可以直接移除

修正后可运行代码

const cheerio = require('cheerio');
const axios = require("axios");

async function getSP500Symbols() {
  try {
    const url = 'https://en.wikipedia.org/wiki/List_of_S%26P_500_companies'
    const { data } = await axios.get(url)
    const $ = cheerio.load(data)
    const symbols = []
    // 选择成分股表格所有行,跳过表头行
    $('#constituents tr').slice(1).each((index, row) => {
      // 取每行第一个单元格的文本,去除空白字符
      const symbol = $(row).find('td:first').text().trim()
      if (symbol) symbols.push(symbol)
    })
    // 输出结果,可根据需求调整
    console.log('共计获取标普500成分股代码数量:', symbols.length)
    console.log('前10个代码示例:', symbols.slice(0,10))
    return symbols
  } catch (err) {
    console.error('爬取失败:', err)
  }
}

getSP500Symbols()

运行效果

执行代码后会输出爬取到的所有成分股代码数组,默认会打印总数量和前10个代码示例,可直接使用返回的symbols数组做后续处理。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 10:36:05