NodeJS使用Cheerio爬取维基百科S&P 500公司表格指定列的实现问题
问题修复说明
- 原代码选择器仅匹配表格第一行单元格,无法获取全量成分股数据
- 原代码最终输出为cheerio实例对象,而非提取到的字段内容
- 原代码中引入的AWS、express依赖未在爬虫逻辑中使用,可按需移除
正确实现代码
const cheerio = require('cheerio'); const axios = require('axios'); async function getSP500Stocks() { try { // 已删除原URL开头的多余空格 const url = 'https://en.wikipedia.org/wiki/List_of_S%26P_500_companies'; const { data: html } = await axios.get(url); const $ = cheerio.load(html); const stockList = []; // 遍历成分股表格的所有行,跳过表头行 $('#constituents tbody tr').each((index, row) => { const symbol = $(row).find('td:nth-child(1)').text().trim(); const security = $(row).find('td:nth-child(2)').text().trim(); // 过滤空行避免脏数据 if (symbol && security) { stockList.push({ symbol, security }); } }); // 输出整理后的列表 console.log('S&P 500 成分股列表:'); console.log(stockList); console.log(`合计提取到${stockList.length}只成分股`); return stockList; } catch (err) { console.error('数据提取失败:', err); } } getSP500Stocks();
运行说明
- 执行前请先安装对应依赖:
npm install cheerio axios - 代码运行后会输出包含所有成分股代码和证券名称的数组,以及提取到的总数量
内容的提问来源于stack exchange,提问作者Dave Michaels
相关产品推荐
相关产品推荐

