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

使用puppeteer-core无法通过pageSize参数获取全部商品列表

问题分析与解决方案

你的问题核心是:URL里指定了pageSize=1000但实际只拿到24条数据,和浏览器默认一致。这说明网站可能未识别到你的分页参数,或者页面动态加载的内容还没渲染完成,再加上用jsdom解析静态HTML的方式,大概率错过了异步加载的商品数据。

可能的原因

  • 网站对pageSize参数有上限限制,强制最大仅返回24条,即使传1000也无效
  • 页面商品列表是AJAX动态加载的,networkidle2的等待时机太早,异步请求还没完成就获取了页面内容
  • 用jsdom解析静态HTML的方式,无法获取Puppeteer浏览器中动态渲染后的完整DOM结构
  • 网站通过反爬机制识别到爬虫,直接返回默认分页数据

解决方案

1. 先验证参数有效性

直接在浏览器中打开你指定的URL,查看页面是否真的加载了774个商品。如果浏览器里也只显示24条,说明网站不支持这么大的pageSize,需要改成网站允许的最大值,或者改成多页循环爬取。

2. 改用Puppeteer内置的页面求值能力,放弃jsdom

Puppeteer的page.evaluate()可以直接在浏览器环境中执行JS,能获取动态渲染后的完整DOM,比把HTML导出到jsdom解析更可靠。

3. 优化页面等待逻辑

可以等待特定商品容器加载完成,或者改用更彻底的网络等待策略,确保异步数据加载完毕。

修改后的代码示例

const puppeteer = require('puppeteer-core');

async function test() {
    const browser = await puppeteer.launch({
        // 本地Chrome需指定路径,示例:Windows为'C:\\Program Files\\Google\\Chrome\\Application\\chrome.exe'
        // executablePath: '/path/to/your/chrome',
        defaultViewport: { width: 1280, height: 720 } // 模拟真实视口,降低反爬识别概率
    });
    const page = await browser.newPage();

    await page.setDefaultNavigationTimeout(0);
    // 设置真实User-Agent,避免被标记为爬虫
    await page.setUserAgent('Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36');

    await page.goto("https://www.liveauctioneers.com/catalog/256884_8-27-22-cameo-cut-glass-art-glass-and-more/?page=1&pageSize=1000", {
        waitUntil: "networkidle0" // 等待所有网络请求完成,比networkidle2更彻底
    });

    // 等待目标商品容器加载完成,确保异步内容渲染完毕
    await page.waitForSelector('.CatalogPageItems__StyledContainer-sc-y0p083-0.bLuQEb', { timeout: 30000 });

    // 在浏览器环境中直接统计商品数量
    const itemCount = await page.evaluate(() => {
        const container = document.querySelector('.CatalogPageItems__StyledContainer-sc-y0p083-0.bLuQEb');
        if (!container) return 0;
        // 替换为实际商品元素的选择器,比如如果商品是带特定类的div,就用container.querySelectorAll('.your-item-class').length
        return container.querySelectorAll('div').length;
    });

    console.log(itemCount);

    await browser.close();
}

test();

额外提示

  • 如果网站确实限制了pageSize最大值,需要循环爬取多页数据,每次递增page参数
  • 可以监听页面的网络请求,找到加载商品列表的API接口,直接请求API会比爬页面更高效稳定
  • 避免频繁连续请求,添加适当延迟,防止被网站封禁IP

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 00:15:43