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

使用Python+Selenium爬取YT内容,PyCharm控制台无输出求助

解决YouTube频道视频信息爬取无输出问题

问题原因分析

  1. 元素定位错误:你用By.CLASS_NAME定位的style-scope ytd-rich-grid-renderer是页面容器的通用类,不是单个视频卡片的标识,导致videos列表为空,循环根本没执行。
  2. XPATH未使用相对定位:代码里的XPATH是全局路径,没有相对于当前video元素查找,就算找到元素也会重复取第一个结果,而且容易定位失败。
  3. 缺少页面加载等待:YouTube是动态加载页面,直接执行查找元素的代码时,视频元素还没渲染完成,返回空列表。
  4. 语法小问题:title和views变量后面多了逗号,会让变量变成元组类型,虽然不报错但不符合预期。

修正后的代码

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

driver = webdriver.Edge()
driver.get("https://www.youtube.com/@CorporateMusician")
driver.maximize_window()

# 等待视频卡片加载完成,最多等10秒
wait = WebDriverWait(driver, 10)
videos = wait.until(EC.presence_of_all_elements_located((By.TAG_NAME, 'ytd-rich-item-renderer')))

for video in videos:
    # 使用相对XPATH定位当前视频内的元素
    title = video.find_element(By.XPATH, './/*[@id="video-title"]').text
    views = video.find_element(By.XPATH, './/*[@id="metadata-line"]/span[1]').text
    posted = video.find_element(By.XPATH, './/*[@id="metadata-line"]/span[2]').text
    print(f"标题: {title}\n播放量: {views}\n发布时间: {posted}\n---")

driver.quit()

关键修改说明

  • 添加显式等待:用WebDriverWait等待视频元素加载完成,避免因页面未渲染导致的空列表。
  • 修正视频卡片定位:用ytd-rich-item-renderer标签定位单个视频卡片,这是YouTube视频项的标准标签。
  • 相对路径XPATH:在XPATH前加.,表示相对于当前video元素查找子元素,确保每个视频的信息对应正确。
  • 移除多余逗号:修正变量定义后的逗号,避免生成不必要的元组。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 04:03:13