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

如何用Python的Selenium实现页面内部滚动条(左侧详情面板)滚动到底部?

解决左侧详情面板自动滚动问题

你的代码现在是对整个页面(document.body)执行滚动,而非目标左侧详情面板,所以没有效果。以下是修正方案:

问题核心

目标滚动区域是类名为main-panel-scroll的元素,必须针对这个元素内部执行滚动操作,不能操作整个页面。

修正后的代码

from selenium import webdriver
from selenium.webdriver.common.by import By
from webdriver_manager.chrome import ChromeDriverManager
import time

driver = webdriver.Chrome(ChromeDriverManager().install())
driver.get('https://kart.1881.no/?query=1010')
time.sleep(8)

# 定位左侧详情面板元素
panel = driver.find_element(By.CLASS_NAME, 'main-panel-scroll')
SCROLL_PAUSE_TIME = 0.5

while True:
    # 获取面板当前的内容总高度
    last_scroll_height = driver.execute_script("return arguments[0].scrollHeight", panel)
    # 将面板滚动到底部
    driver.execute_script("arguments[0].scrollTop = arguments[0].scrollHeight", panel)
    time.sleep(SCROLL_PAUSE_TIME)
    
    new_scroll_height = driver.execute_script("return arguments[0].scrollHeight", panel)
    # 检查是否滚动到底部(scrollTop+可视高度 >= 内容总高度,留10像素误差避免动态加载小偏差)
    current_scroll_top = driver.execute_script("return arguments[0].scrollTop", panel)
    panel_visible_height = driver.execute_script("return arguments[0].clientHeight", panel)
    
    if current_scroll_top + panel_visible_height >= new_scroll_height - 10:
        # 等待片刻确认是否有新内容加载
        time.sleep(SCROLL_PAUSE_TIME)
        new_scroll_height = driver.execute_script("return arguments[0].scrollHeight", panel)
        current_scroll_top = driver.execute_script("return arguments[0].scrollTop", panel)
        if current_scroll_top + panel_visible_height >= new_scroll_height - 10:
            break
        else:
            continue

time.sleep(10)
driver.quit()

关键改动说明

  • 先定位目标面板元素并保存为panel变量,后续滚动脚本通过arguments[0]传入该元素
  • 滚动逻辑改为设置元素的scrollTop属性到自身的scrollHeight(即元素内部内容的总高度)
  • 判断是否到底部时,用scrollTop + 元素可视高度和scrollHeight对比,比单纯比较scrollHeight更准确,能适配动态加载的场景

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 14:42:59