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

为什么我的代码无法将YouTube页面滚动到底部?

解决YouTube频道视频页面滚动到底部的Selenium问题

你的代码存在几个核心问题,导致无法正常滚动到页面底部:

  1. 缺少必要模块导入:代码使用了time.sleep(2)但未导入time模块,运行会直接抛出错误。
  2. 页面高度判断逻辑失效:YouTube视频列表采用动态加载机制,每次滚动到底部会异步加载新内容,页面高度会实时更新。原代码中基于document.body.offsetHeight的判断,要么会在新内容加载前误判为已到底部,要么因为滚动容器并非body元素,导致高度计算偏差。
  3. 固定像素滚动不可靠:固定滚动1000像素的方式,可能无法触发YouTube的加载触发机制,或是在不同屏幕尺寸下滚动距离不足。

修正后的代码方案一:跟踪页面高度变化

from selenium import webdriver
import time

driver = webdriver.Chrome()
driver.get('https://www.youtube.com/@freecodecamp/videos')
driver.maximize_window()

# 记录初始页面高度
last_page_height = driver.execute_script("return document.documentElement.scrollHeight")

while True:
    # 滚动到当前页面的最底部
    driver.execute_script("window.scrollTo(0, document.documentElement.scrollHeight);")
    # 等待新内容加载(可根据网络情况调整等待时长)
    time.sleep(3)
    
    # 获取更新后的页面高度
    current_page_height = driver.execute_script("return document.documentElement.scrollHeight")
    
    # 如果高度不再变化,说明已加载完所有内容
    if current_page_height == last_page_height:
        break
    last_page_height = current_page_height

driver.quit()

修正后的代码方案二:滚动到最后一个视频元素

from selenium import webdriver
import time
from selenium.webdriver.common.by import By

driver = webdriver.Chrome()
driver.get('https://www.youtube.com/@freecodecamp/videos')
driver.maximize_window()

while True:
    # 获取当前页面所有视频元素
    current_videos = driver.find_elements(By.TAG_NAME, "ytd-rich-item-renderer")
    if not current_videos:
        break
    
    # 滚动到最后一个视频元素,触发加载
    driver.execute_script("arguments[0].scrollIntoView({behavior: 'smooth', block: 'end'});", current_videos[-1])
    time.sleep(3)
    
    # 检查是否有新视频加载
    updated_videos = driver.find_elements(By.TAG_NAME, "ytd-rich-item-renderer")
    if len(updated_videos) == len(current_videos):
        # 无新视频加载,说明已到底部
        break

driver.quit()

关键优化点说明

  • 改用document.documentElement.scrollHeight计算页面高度,这是YouTube实际滚动容器(html元素)的高度,比body高度更准确。
  • 通过跟踪页面高度变化或对比视频元素数量,判断是否还有新内容可加载,避免误判。
  • 最大化浏览器窗口,确保滚动触发机制能正常触发。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 16:07:19