使用Python Selenium获取视频的长度

时间:2019-10-04 12:45:17

标签: python selenium selenium-webdriver xpath

我正在用Python Selenium构建一个机器人,该机器人可以注册Udemy上免费的最高评分课程。我还希望该机器人为我播放视频,并在视频播放完毕后继续播放下一个视频。以前,我在Google上进行搜索,发现了一些有关如何获取视频文件的视频长度的答案,但是这些答案不适用于Udemy Course Video。

我真正想要的是获取视频的总长度(以秒或分钟为单位),而该漫游器将持续跟踪时间,并且当播放时间等于视频的总长度时,它可以继续前进转到下一个视频...下面是我正在使用的代码,它将仅登录到该帐户并注册有关Udemy的免费搜索课程之一。

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

email='huaaddty8339@gmail.com'
password='kulningkswoymama7'

browser = webdriver.Firefox()
browser.get('https://www.udemy.com')
time.sleep(25)
browser.find_element_by_xpath('/html/body/div[2]/div[2]/div[1]/div[4]/div[6]').click()
time.sleep(9)

browser.find_element_by_xpath('//*[@id="email--1"]').send_keys(email)
time.sleep(4)

browser.find_element_by_xpath('//*[@id="id_password"]').send_keys(password)
time.sleep(2)

browser.find_element_by_xpath('//*[@id="submit-id-submit"]').click()
time.sleep(16)

browser.find_element_by_xpath('//*[@id="header-search-field"]').send_keys("Python")
time.sleep(15)

WebDriverWait(browser,20).until(EC.element_to_be_clickable((By.XPATH,"//button[.//span[text()='All 
Filters']]"))).click()


time.sleep(5)
WebDriverWait(browser,20).until(EC.element_to_be_clickable((By.XPATH,"//label[@title and 
.//span/span[text()='Free']]"))).click()
time.sleep(5)

browser.execute_script("window.open('');") 
time.sleep(5)
browser.switch_to.window(browser.window_handles[1])
time.sleep(5)
browser.get("https://www.udemy.com/course/kypython-101/")
time.sleep(30)
try:

 browser.find_element_by_xpath("//html/body/div[2]/div[3]/div[3]/div[1]/div[2]/div[3]/div[1]/div/div/button").click()
 time.sleep(3)

except:
 WebDriverWait(browser, 30).until(EC.element_to_be_clickable((By.XPATH,"/html/body/div[2]/div[3]/div[4]/div/div[2]/div[2]/div/div[1]/div[2]/div[1]/div/div[5]/div/div/div/button"))).click()

1 个答案:

答案 0 :(得分:0)

您可以执行以下操作:

  1. 解析包含所需视频的视频标签的ID
  2. document.getElementById('playerId__4399364_html5_api').duration之类的页面中执行javascript代码,该代码将返回持续时间(以秒为单位)。别忘了将ID更改为与您的案件相关的ID。

PS -您可以在此处了解有关JS执行的更多信息:Running javascript in Selenium using Python

P.P.S。-在这里您可以找到more properties of video,可以帮助您完成任务。