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

Python Splinter/Selenium如何加载懒加载网页全部内容

问题核心判断

你遇到的不是普通图片/内容懒加载,是前端常用的**虚拟滚动(Virtual Scrolling)**机制:这类实现为了降低长列表的渲染性能消耗,只会在DOM树中保留视口附近的5-10个节点,滚动时会实时销毁离开视口的旧节点、创建进入视口的新节点。不存在通用的“强制浏览器加载全部内容”的方法——因为这套逻辑是网站自身的JS代码控制的,和浏览器原生加载行为无关。

可行方案(按落地优先级排序)

1. 优先直接抓取数据源接口,完全跳过DOM采集

这是效率最高、数据一致性最好的方案,没有之一:

  • 所有股价数据必然是前端通过HTTP接口或者WebSocket连接从服务端拉取的,不会凭空生成在DOM里。打开浏览器开发者工具,切到「网络」面板,选择Fetch/XHR或WS过滤,触发一次页面滚动,就能找到返回批量股票代码、价格、时间戳的对应请求。
  • 如果接口没有复杂的加密验签逻辑,直接用requests/httpx模拟请求就能一次性拿到全量200条数据,返回结果一般是结构化JSON,解析成本远低于扒DOM,且数据本身就是服务端同一时间点生成的,完全满足一致性要求。
  • 如果接口带动态签名、不好复现请求逻辑,直接用CDP协议拦截浏览器的网络响应即可,不需要手动破解加密。以Playwright为例,核心代码如下:
from playwright.sync_api import sync_playwright

with sync_playwright() as p:
    browser = p.chromium.launch(headless=False)
    page = browser.new_page()
    stock_data = {}

    # 监听匹配股价数据的接口响应
    def catch_stock_response(response):
        # 替换为你抓到的接口路径特征关键词
        if "stock/batch" in response.url and response.status == 200:
            stock_data["snapshot"] = response.json()

    page.on("response", catch_stock_response)
    page.goto("你的目标页面地址")
    # 等待接口返回全量数据
    page.wait_for_event("response", lambda resp: "stock/batch" in resp.url)

    # stock_data["snapshot"] 就是同一时间戳下的全量200条股价数据
    print(stock_data["snapshot"])
    browser.close()

如果数据是通过WebSocket推送的,用同样的监听逻辑拦截WS帧内容即可,连滚动触发都不需要。

2. 注入JS改写虚拟滚动配置,强制全量渲染DOM

如果因为特殊原因无法抓接口,可以尝试从虚拟滚动的实现逻辑入手破局:

  • 市面上绝大多数虚拟滚动组件(react-window、vue-virtual-scroller等)都支持配置渲染缓冲区大小、单条元素高度参数。你可以在页面初始化阶段注入JS,把组件的overscanCount(缓冲区渲染数量)参数改到200以上,或者直接把虚拟滚动容器的高度设置为200 * 单条元素高度,触发组件一次性渲染全部200个节点,之后就可以直接一次性读取全量DOM数据。
  • 通用调试思路:在元素面板找到带overflow: auto样式的滚动容器,在控制台执行JS强制修改容器和内部列表节点的高度,大部分场景下可以触发全量渲染。

3. 快速滚动采集+时间戳对齐(兜底方案)

如果前两种方案都无法落地,可以优化采集逻辑把时间差压到可接受范围:

  • 放弃Splinter封装的慢速元素定位方法,直接通过page.evaluate()执行原生JS操作滚动条、读取DOM内容,单步操作耗时可以压到5毫秒以内,200条数据全量采集总耗时不超过1秒,和股价1秒的更新周期基本对齐。
  • 采集每一条数据时同步记录当前的时间戳,采集完成后按时间戳做对齐,取同一秒内的快照数据即可,误差可以忽略。

注意:不要用逐次慢速滚动、等待元素加载的逻辑采集,这类操作单步耗时普遍在几百毫秒,走完200条总耗时会达到几十秒,完全无法满足数据一致性要求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 00:03:20