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

使用Selenium截取YouTube视频截图遇到的问题求助

YouTube视频截图自动化问题汇总与求助

我有大约600个YouTube视频URL,需要为每个视频截取一张截图。在对整个URL列表循环处理前,我先尝试为单个视频实现该功能,但遇到了多个问题:

  • 点击播放按钮失败
  • 截图无法渲染视频内容,仅显示播放按钮、时间码等元素
  • 不确定如何处理视频中偶尔出现的广告(暂时不确定是否会影响流程)

问题1:点击播放按钮失败

我使用以下代码尝试点击播放按钮:

vid_xpath = '//*[@id="movie_player"]'

driver = webdriver.Firefox()
url = 'https://www.youtube.com/watch?v=xjlmFGO3fKE&t=110s'
driver.get(url)
#driver.implicitly_wait(10)

# 点击播放按钮
driver.find_element(By.CSS_SELECTOR, ".ytp-large-play-button").click()
time.sleep(1)
driver.find_element(By.CSS_SELECTOR, ".ytp-large-play-button").click()

# 后续执行截图操作

执行时出现以下错误:

ElementNotInteractableException           Traceback (most recent call last)
/var/folders/k9/wwjktzjs3lzg4xwn06htpryh0000gn/T/ipykernel_1601/155648964.py in <module>
     12 driver.find_element(By.CSS_SELECTOR, ".ytp-large-play-button").click()
     13 time.sleep(1)
---&gt; 14 driver.find_element(By.CSS_SELECTOR, ".ytp-large-play-button").click()
     15 #I would then Take the screen shot
     16 

~/opt/anaconda3/envs/macs40400/lib/python3.9/site-packages/selenium/webdriver/remote/webelement.py in click(self) -&gt; None:
     91     def click(self) -&gt; None:
     92         """Clicks the element."""
---&gt; 93         self._execute(Command.CLICK_ELEMENT)
     94 
     95     def submit(self):

~/opt/anaconda3/envs/macs40400/lib/python3.9/site-packages/selenium/webdriver/remote/webelement.py in _execute(self, command, params)
    408             params = {}
    409         params["id"] = self._id
--&gt; 410         return self._parent.execute(command, params)
    411 
    412     def find_element(self, by=By.ID, value=None) -&gt; WebElement:

~/opt/anaconda3/envs/macs40400/lib/python3.9/site-packages/selenium/webdriver/remote/webdriver.py in execute(self, driver_command, params)
    442         response = self.command_executor.execute(driver_command, params)
...
webdriverClickElement@chrome://remote/content/marionette/interaction.sys.mjs:150:11
interaction.clickElement@chrome://remote/content/marionette/interaction.sys.mjs:119:11
clickElement@chrome://remote/content/marionette/actors/MarionetteCommandsChild.sys.mjs:198:29
receiveMessage@chrome://remote/content/marionette/actors/MarionetteCommandsChild.sys.mjs:86:31

我尝试使用XPATH替代CSS选择器,但仍出现相同错误。


问题2:截图无法渲染视频内容

我使用以下代码截图,但仅得到空白视频框,无法显示视频内容:

element = driver.find_element(By.XPATH,vid_xpath)
element.screenshot(".\\test.png")

我尝试更换过多个视频XPATH:

  • /html/body/ytd-app/div[1]/ytd-page-manager/ytd-watch-flexy/div[5]/div[1]/div/div[1]/div[2]/div/div/ytd-player/div/div/div[1]/video
  • //*[@id="movie_player"]
  • //*[@id="ytd-player"]
  • //*[@id="container"]

问题3:广告处理疑问

我发现使用YouTube URL中的时间码可以观看5秒无广告视频,暂以此作为可能的解决方案,但尚未验证效果。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 07:20:13