Python selenium 中如何对网站中内嵌的视频进行操作呢?

就是如图,想点击这个切换线路。

但是在网页的代码中看不到这个按钮在哪儿点击


请问有什么方法可以进行操作呢?
Python selenium 中如何对网站中内嵌的视频进行操作呢?


19 回复

pyautogui


对于网站内嵌视频的操作,Selenium本身不直接支持,但可以通过JavaScript来间接控制。核心思路是找到视频元素,然后调用其原生API。

from selenium import webdriver
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("你的目标网页URL")

# 等待并定位视频元素(根据实际情况调整选择器)
wait = WebDriverWait(driver, 10)
video_element = wait.until(EC.presence_of_element_located((By.TAG_NAME, "video")))

# 通过JavaScript执行视频控制
driver.execute_script("arguments[0].play();", video_element)  # 播放
driver.execute_script("arguments[0].pause();", video_element) # 暂停
driver.execute_script("arguments[0].currentTime = 60;", video_element) # 跳转到60秒

# 获取视频状态
duration = driver.execute_script("return arguments[0].duration;", video_element)
current_time = driver.execute_script("return arguments[0].currentTime;", video_element)
is_paused = driver.execute_script("return arguments[0].paused;", video_element)

print(f"视频总时长: {duration}秒")
print(f"当前播放位置: {current_time}秒")
print(f"是否暂停: {is_paused}")

# 如果需要控制音量(0.0到1.0)
driver.execute_script("arguments[0].volume = 0.5;", video_element)

# 如果需要全屏
driver.execute_script("arguments[0].requestFullscreen();", video_element)

driver.quit()

关键点说明:

  1. 定位元素:视频通常用<video>标签,但也可能是通过<iframe><object>嵌入。如果是iframe,需要先driver.switch_to.frame()切换进去。
  2. JavaScript控制:所有操作都通过execute_script()调用视频元素的原生方法(play/pause)和属性(currentTime, volume)。
  3. 等待机制:务必使用显式等待确保视频元素加载完成。
  4. 跨域限制:如果视频来自不同域名,可能会遇到跨域安全限制,这时Selenium也无能为力。

一句话建议: 用JavaScript直接调用视频元素的API是最可靠的方法。

谢谢您啦 我去了解一下

我乱说的(逃

通过 driver 的 move_by_offset() 指定某个位置 然后进行鼠标点击操作

这个位置是怎么找的哈,应该通过什么方法来计算呢。。。

超星刷课? Google 搜一下有破解 api 的

主要想自己来学习下 selenium 的相关操作,基本上已经可以一个视频一个视频看了,但是因为我没有用校内网,他那个本校的线路是需要校内网访问的,所以我只能切换一下公网进行观看视频

move_by_offset() 就是通过坐标点击

你先找到视频上层的 div 节点位置,然后计算一下按钮的相对位置就可以了

这个视频是在一个 iframe 里面的,由于是初学,刚才试了一下,好像不管用。可能是我的方法不对。。。

在 iframe 里面需要 switch 操作切换到 iframe 我记得是这样

我切换到当前 iframe 下后,计算那个本校的坐标是通过外层的 676X542 算的。好像没有看见效果。

建议你可以先测试点击非 iframe 的按钮试试函数是否被调用。再通过获取页面源码查看是否切换到 iframe,最后如果实在不行的话,考虑通过外部点击实现 具体参考 import win32api,win32gui,win32con 但是这样就不能使用 headless 浏览器了。

这是打算自动刷课吗? gayhub 有个跳课的插件 更方便

谢谢您啦

自己做着玩哈

我之前做刷课用的 execute script

哦抱歉,我之前做刷课是对视频静音用的执行 js,你的这个的话看看有没有 api 能调用,能调用的话执行 js 应该是最舒服的,不然就要控制鼠标模拟点击

回到顶部