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

如何用Selenium分步滚动无限加载页面 确保懒加载图片正常加载

Selenium逐段滚动加载懒加载图片方案

原有实现直接滚动到当前页面总高度,中间未进入视口的懒加载图片无法触发资源加载逻辑,仅保留base64占位符,改为逐段滚动即可让所有图片依次进入视口完成加载,优化后代码如下:

import time

def scroll_to_bottom(driver, step=300, wait_per_step=0.5, final_wait=2):
    last_height = driver.execute_script("return document.body.scrollHeight")
    current_scroll = 0
    while True:
        # 单次滚动固定像素步长
        current_scroll += step
        driver.execute_script(f"window.scrollTo(0, {current_scroll});")
        # 等待当前视口内图片完成加载
        time.sleep(wait_per_step)
        
        # 滚动高度超过当前页面总高度时判断是否触底
        if current_scroll >= last_height:
            # 等待无限加载的新内容渲染完成
            time.sleep(final_wait)
            new_height = driver.execute_script("return document.body.scrollHeight")
            # 页面高度无变化说明已到达真正底部,终止循环
            if new_height == last_height:
                break
            # 有新内容加载,更新总高度继续滚动
            last_height = new_height

参数说明

  • step:单次滚动的像素高度,默认300,可根据页面懒加载触发阈值调整,步长越小越能覆盖所有图片的触发条件
  • wait_per_step:每次滚动后的等待时长,单位为秒,默认0.5,网络状况差的场景可适当调大
  • final_wait:每次触碰到当前页面底部后的等待时长,给无限加载的新内容预留渲染时间,默认2秒

进阶优化

如果不想用固定等待浪费时间,可以将固定等待替换为Selenium显示等待,判断当前视口内的img元素src属性是否已替换为非base64的真实资源链接,进一步提升运行效率。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 18:03:03