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

Node.js 如何提取标签innerText中的整数数据?

从页面文本中提取整数(Puppeteer场景)

你通过innerText获取页面标签文本后,想要从中提取整数类型数据,可以用以下几种方法实现,结合你的Puppeteer代码示例修改如下:

你的原始代码(供参考)

const scraperObject = {
    url: 'https://stockx.com/fr-fr/dior-b713-cactus-jack-mocha',
    async scraper(browser){
        let page = await browser.newPage();
        console.log(`Navigating to ${this.url}...`);
        await page.goto(this.url);

        await page.waitForSelector('#onetrust-reject-all-handler');
        await page.click('#onetrust-reject-all-handler');

        const result = await page.evaluate(() => {
            let demandes = document.querySelector('#main-content > div > section:nth-child(3) > div.css-gg4vpm > div.css-0 > div.css-qt7qal > div.chakra-stack.css-1g42e87 > div > a.chakra-button.css-2zzyy5 > p').innerText;
            let offres = document.querySelector('#main-content > div > section:nth-child(3) > div.css-gg4vpm > div.css-0 > div.css-qt7qal > div.chakra-stack.css-1g42e87 > a > p').innerText;
            return {demandes, offres}
        })

        console.log(result);
        browser.close()
        return result
    }
}

解决方案:提取整数的几种方式

1. 基础正则提取(适用于无千位分隔符的整数)

用正则表达式匹配文本中的数字序列,再转换为整数。直接在page.evaluate里处理:

const result = await page.evaluate(() => {
    // 提取单个整数的工具函数
    const extractInt = (text) => {
        const match = text.match(/\d+/); // 匹配第一个连续数字序列
        return match ? parseInt(match[0], 10) : null; // 转成整数,无匹配则返回null
    }

    let demandesText = document.querySelector('#main-content > div > section:nth-child(3) > div.css-gg4vpm > div.css-0 > div.css-qt7qal > div.chakra-stack.css-1g42e87 > div > a.chakra-button.css-2zzyy5 > p').innerText;
    let offresText = document.querySelector('#main-content > div > section:nth-child(3) > div.css-gg4vpm > div.css-0 > div.css-qt7qal > div.chakra-stack.css-1g42e87 > a > p').innerText;

    return {
        demandes: extractInt(demandesText),
        offres: extractInt(offresText)
    }
})

2. 处理带千位分隔符的整数

如果文本里的数字是类似1,234这种带逗号分隔的格式,先清除分隔符再提取:

const extractInt = (text) => {
    const cleanedText = text.replace(/,/g, ''); // 去掉所有逗号
    const match = cleanedText.match(/\d+/);
    return match ? parseInt(match[0], 10) : null;
}

3. 提取所有整数(如果文本中有多个数字)

如果需要提取文本里的所有整数,用全局匹配获取数组后逐个转换:

const extractAllInts = (text) => {
    const matches = text.match(/\d+/g);
    return matches ? matches.map(num => parseInt(num, 10)) : [];
}

注意事项

  • 若需要提取小数,可把parseInt换成parseFloat
  • 若页面元素可能不存在,建议给querySelector添加判断逻辑,避免抛出错误

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 07:24:12