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

如何使用Python的Selenium检测YouTube平台上的广告

YouTube广告检测的可行方案

首先指出你当前代码的核心错误:WebDriverWait的until方法中,EC.presence_of_element_located需要接收定位器元组(比如(By.XPATH, 'xxx')),而不是直接调用driver.find_element_by_xpath,这会导致代码逻辑失效。

以下是几种经过验证的广告检测方法:

方法1:结合广告容器类与跳过按钮定位

YouTube播放广告时,会给页面元素添加特定类名,同时部分广告会出现跳过按钮,结合这两个特征可以提高检测准确率:

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

def check_ad():
    # 检测广告播放状态的容器元素
    try:
        WebDriverWait(driver, 5).until(
            EC.presence_of_element_located(
                (By.XPATH, "//div[contains(@class, 'ad-showing') or contains(@class, 'ad-interrupting')]")
            )
        )
        print("Ad detected")
        return True
    except:
        # 补充检测跳过按钮(部分广告延迟出现跳过按钮)
        try:
            WebDriverWait(driver, 3).until(
                EC.presence_of_element_located(
                    (By.XPATH, "//button[contains(text(), '跳过广告') or contains(text(), 'Skip Ad')]")
                )
            )
            print("Ad detected (skip button present)")
            return True
        except:
            print("No Ad")
            return False

方法2:通过JavaScript直接获取播放器广告状态

YouTube的内置播放器对象包含广告状态信息,执行JS可以直接读取,这种方法更稳定:

def check_ad_via_js():
    try:
        # 读取播放器的广告播放状态
        ad_playing = driver.execute_script("""
            const player = document.getElementById('movie_player');
            return player && player.getVideoData && player.getVideoData().adPlaying;
        """)
        if ad_playing:
            print("Ad detected via JS")
            return True
    except:
        pass
    print("No Ad")
    return False

如果上面的JS代码失效,可以尝试另一种读取方式:

ad_playing = driver.execute_script("return document.querySelector('video').playerInfo?.adInfo?.isAdPlaying || false;")

注意事项

  • YouTube的页面元素类名、ID会不定期更新,若检测失效,需要重新定位最新的广告相关元素;
  • 检测等待时间建议设置在3-5秒,避免阻塞后续流程;
  • 可以同时结合多种检测方法,进一步提升准确率。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 14:20:39