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

如何用Node.js获取HTML元素特定值?以抓取网站用户数为例

使用Puppeteer抓取feds.lol网站用户数的实现步骤

没问题,用Puppeteer抓这个数据很简单,按下面步骤来就行:

1. 初始化项目并安装依赖

  • 新建一个文件夹,打开终端执行 npm init -y 快速初始化项目
  • 安装Puppeteer:npm install puppeteer(这个包会自动下载Chromium,要是想省空间可以装puppeteer-core,自己指定本地已有的浏览器)

2. 编写核心抓取代码

核心逻辑就是:启动浏览器→打开目标页面→定位到用户数元素→提取数据→清理资源。

首先得拿到用户数对应的元素选择器:打开https://feds.lol按F12调出开发者工具,找到显示用户数的那个嵌套div,右键它→复制→复制选择器(比如实际页面里可能是div.stats-container > div.user-stat > span.count,你要复制真实的选择器)。

创建一个scrape-user-count.js文件,写入以下代码:

const puppeteer = require('puppeteer');

async function getFedsUserCount() {
  // 启动浏览器,调试时可以把headless改成false,能看到浏览器操作过程
  const browser = await puppeteer.launch({ headless: true });
  const page = await browser.newPage();

  try {
    // 打开目标页面,等待网络空闲确保页面加载完成
    await page.goto('https://feds.lol', { waitUntil: 'networkidle2' });

    // 替换成你从开发者工具复制的真实选择器
    const userCountSelector = '替换成你的选择器';
    // 等待元素加载,避免因页面未渲染完成找不到元素
    await page.waitForSelector(userCountSelector);

    // 提取元素的文本内容
    const rawText = await page.$eval(userCountSelector, el => el.textContent.trim());

    // 处理文本(比如如果文本是"12345 位用户",就提取数字部分)
    const userCount = parseInt(rawText.replace(/[^0-9]/g, ''), 10);

    // 打印结果到控制台
    console.log('当前网站用户数:', userCount || rawText);
  } catch (err) {
    console.error('抓取出错:', err);
  } finally {
    // 无论成功失败都关闭浏览器
    await browser.close();
  }
}

// 执行抓取函数
getFedsUserCount();

3. 运行代码

在终端执行 node scrape-user-count.js,就能看到控制台打印出用户数了。

注意点

  • 选择器一定要准确,要是报错找不到元素,回去检查复制的选择器是否正确
  • 如果页面加载慢,可以调整page.goto的waitUntil参数,或者添加超时时间
  • 后续要扩展功能的话,直接在当前代码基础上修改即可,比如把数据写入文件或者存数据库

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 16:40:27