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

如何使用Selenium在YouTube视频上右键调出“Stats for Nerds”选项?

解决Selenium右键点击YouTube视频调出“Stats for Nerds”的问题

要实现右键点击YouTube视频调出菜单并打开“Stats for Nerds”,核心是用Selenium的ActionChains类模拟右键操作,再定位菜单选项完成点击。以下是具体实现方案:

关键步骤

  1. 定位视频播放元素:YouTube的视频容器通常可通过id="movie_player"或class="ytp-player"定位,这是右键操作的目标元素。
  2. 模拟右键点击:使用ActionChains.context_click()方法触发右键菜单。
  3. 打开Stats面板:定位右键菜单中的“Stats for Nerds”选项并点击。
  4. 提取广告相关ID:通过执行JS代码提取ytp-sfn-cpn或ytp-sfn-video-id元素的内容。
  5. 关闭Stats面板:点击面板的关闭按钮完成操作。

完整代码示例(Python)

from selenium import webdriver
from selenium.webdriver.common.action_chains import ActionChains
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.Chrome()
driver.get("https://www.youtube.com/watch?v=目标视频ID")

# 等待视频播放元素加载完成
video_player = WebDriverWait(driver, 10).until(
    EC.presence_of_element_located((By.ID, "movie_player"))
)

# 模拟右键点击视频区域
actions = ActionChains(driver)
actions.context_click(video_player).perform()

# 等待右键菜单出现并点击“Stats for Nerds”
stats_option = WebDriverWait(driver, 5).until(
    EC.element_to_be_clickable((By.XPATH, '//div[text()="Stats for Nerds"]'))
)
stats_option.click()

# 执行自定义JS提取广告CPN(对应你原代码的逻辑)
ad_cpn = driver.execute_script("""
var cpn_elem = document.getElementsByClassName("ytp-sfn-cpn");
return cpn_elem.length > 0 ? cpn_elem[0].innerText : null;
""")

# 提取广告视频ID(Stats面板中的Video ID字段)
ad_video_id = driver.execute_script("""
var id_elem = document.getElementsByClassName("ytp-sfn-video-id");
if (id_elem.length > 0) {
    return id_elem[0].innerText.split(": ")[1];
}
return null;
""")

# 输出提取的信息
print(f"广告CPN: {ad_cpn}")
print(f"广告视频ID: {ad_video_id}")

# 关闭Stats面板
close_btn = WebDriverWait(driver, 5).until(
    EC.element_to_be_clickable((By.CLASS_NAME, "ytp-sfn-close"))
)
close_btn.click()

# 执行跳过广告操作(对应你原代码的逻辑)
skip_btn = WebDriverWait(driver, 10).until(
    EC.element_to_be_clickable((By.CLASS_NAME, "ytp-ad-skip-button"))
)
skip_btn.click()

# 关闭浏览器
driver.quit()

注意事项

  • 元素定位适配:如果YouTube UI更新导致XPath或Class失效,可通过浏览器开发者工具重新定位右键菜单选项和Stats面板元素。
  • 等待机制:必须使用WebDriverWait等待元素加载,避免因页面未渲染完成导致的元素未找到错误。
  • 右键菜单触发:右键点击视频元素时,确保元素处于可见状态,若视频被弹窗遮挡需先处理弹窗。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 14:45:37