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

如何用Puppeteer加载底部带Loading的完整页面及对应元素CSS Selector写法

Puppeteer 加载目标站点全量内容解决方案

1. 加载提示元素CSS Selector

实测该站点滚动加载时显示的Loading元素对应正确CSS选择器为 div[data-testid="loading-spinner"]。站点有更多车辆内容待加载时,该元素会展示在列表底部;全量内容加载完成后,该元素会被隐藏或从DOM中移除。
如果后续站点前端迭代导致选择器失效,可以打开浏览器开发者工具的元素拾取功能,点选加载状态的提示元素,直接复制其CSS选择器即可替换使用。

2. 自动滚动加载全量内容实现方案

实现逻辑为:页面首次加载完成后,循环滚动到页面底部,检测加载元素是否存在,存在则等待新内容渲染完成,直到加载元素消失即代表所有内容加载完毕。
完整示例代码如下:

const puppeteer = require('puppeteer');

(async () => {
  // 启动浏览器,调试时可将headless设为false观察滚动过程
  const browser = await puppeteer.launch({ headless: 'new' });
  const page = await browser.newPage();
  const targetUrl = 'https://www.pluginauto.com/pre-owned-cars';

  // 跳转目标页面,等待网络空闲
  await page.goto(targetUrl, { waitUntil: 'networkidle2', timeout: 30000 });

  // 等待车辆列表首次渲染完成
  await page.waitForSelector('.pre-owned-cars__list-wrapper', { timeout: 10000 });

  let lastPageHeight = 0;
  // 循环滚动加载
  while (true) {
    // 记录当前页面高度
    lastPageHeight = await page.evaluate(() => document.body.scrollHeight);
    // 滚动到页面底部触发加载
    await page.evaluate(() => window.scrollTo(0, document.body.scrollHeight));

    // 检测是否还有加载元素,没有则说明已加载完全部内容
    const loadingElementExists = await page.$('div[data-testid="loading-spinner"]') !== null;
    if (!loadingElementExists) break;

    // 等待新内容加载完成,页面高度更新
    try {
      await page.waitForFunction(
        (prevHeight) => document.body.scrollHeight > prevHeight,
        { timeout: 8000 },
        lastPageHeight
      );
      // 增加短时间等待避免渲染未完成就进入下一次循环
      await page.waitForTimeout(200);
    } catch (err) {
      // 超时无新内容则退出循环
      break;
    }
  }

  // 此处可获取全量页面内容或提取车辆数据
  const fullPageHtml = await page.content();
  console.log('全量页面内容加载完成,可进行后续数据处理');

  await browser.close();
})();

注意事项

  • 若遇到反爬拦截,可按需添加随机UA、请求间隔、代理IP等配置规避
  • 可根据实际网络情况调整等待超时的时长,避免因网络慢导致的提前退出循环

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 00:00:04