播放 YouTube 视频直到完成

分享于2022年07月17日 api python selenium 问答
【问题标题】:播放 YouTube 视频直到完成(Play YouTube video until finished)
【发布时间】:2022-01-27 17:30:47
【问题描述】:

我正在使用 Selenium 编写 Python 脚本来搜索和播放 YouTube 视频。

这是我的代码:

import time
from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from webdriver_manager.chrome import ChromeDriverManager
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

# Defining video name
video_name = "4k art"

driver = webdriver.Chrome(service=Service(ChromeDriverManager().install()))
driver.maximize_window()

wait = WebDriverWait(driver, 3)
presence = EC.presence_of_element_located
visible = EC.visibility_of_element_located

# Navigate to url with video being appended to search_query
driver.get('https://www.youtube.com/results?search_query={}'.format(str(video_name)))

# play the video
wait.until(visible((By.ID, "video-title")))
driver.find_element(By.ID, "video-title").click()


# Wait for video to end

所以,一切正常,但我想知道让脚本等到视频完成后再完成的最佳方法是什么?我看到了使用 YouTube API 或使用 Selenium 出现元素的不同方法。有没有首选的方法?

  • ytp-time-duration 或重播按钮[@aria-label="Replay"]

【解决方案1】:

你可以寻找重播按钮,如果出现退出循环

wait=WebDriverWait(driver,10)    
While True:
    try:
        wait.until(EC.element_to_be_clickable((By.XPATH,"//button[@aria-label='Replay']"))) 
        break 
    except:
        pass

进口:

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

  • 你说的是 WebDriverWait(driver,10) ,我猜现在连 YouTube 短片都至少要一分钟;)
  • 它更像是循环,直到重播按钮弹出可以老实交换到任何时间。
  • 我指的是等待 10 秒 ;)