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

如何将Puppeteer自动滚动页面的函数转换为PuppeteerSharp实现?

PuppeteerSharp 自动滚动到页面底部实现代码

核心逻辑和原Puppeteer JS版完全一致,PuppeteerSharp的EvaluateExpressionAsync方法可以直接执行原有的页面JS逻辑,只需外层封装为C#异步方法即可:

using PuppeteerSharp;

// 自动滚动方法
public async Task AutoScrollAsync(IPage page)
{
    await page.EvaluateExpressionAsync(@"
        await new Promise((resolve, reject) => {
            var totalHeight = 0;
            var distance = 100;
            var timer = setInterval(() => {
                var scrollHeight = document.body.scrollHeight;
                window.scrollBy(0, distance);
                totalHeight += distance;

                if(totalHeight >= scrollHeight){
                    clearInterval(timer);
                    resolve();
                }
            }, 100);
        });
    ");
}

调用示例

await using var browser = await Puppeteer.LaunchAsync(new LaunchOptions { Headless = true });
await using var page = await browser.NewPageAsync();
await page.GoToAsync("目标页面地址");

// 执行自动滚动
await AutoScrollAsync(page);

// 滚动完成后可执行后续操作,比如截图、提取内容
await page.ScreenshotAsync("full-page.png");

注意事项

  • 可以调整代码中的distance参数修改每次滚动的像素距离,调整setInterval的第二个参数(默认100ms)修改滚动间隔,适配不同加载速度的页面
  • 如果是无限加载的长列表页面,可以额外增加滚动后新内容高度变化的判断逻辑,避免提前停止滚动
  • 如果页面滚动容器不是document.body,需要把document.body.scrollHeight替换为对应容器的DOM节点属性

内容的提问来源于stack exchange,提问作者Harimanda Jerrys Randriamire

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 05:09:00