如何使用Python和Selenium点击视频页面的下载按钮?
用Python + Selenium 点击视频下载按钮的解决办法
针对浏览器原生视频控件的下载按钮
浏览器原生的video控件(比如Chrome),当视频允许下载时,控件上会显示下载图标。但原生控件的DOM由浏览器生成,不同浏览器结构有差异,以下是Chrome环境下的操作步骤:
- 等待视频元素加载完成,确保控件可交互
- 鼠标悬停到视频上触发控件显示(部分浏览器控件默认隐藏)
- 定位下载按钮并点击
代码示例:
from selenium import webdriver from selenium.webdriver.common.action_chains import ActionChains 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") # 等待视频元素加载 video = WebDriverWait(driver, 10).until( EC.presence_of_element_located((By.TAG_NAME, "video")) ) # 悬停到视频上显示控件 ActionChains(driver).move_to_element(video).perform() # 定位下载按钮(Chrome中按钮的title通常是"下载",可根据实际DOM调整xpath) download_btn = WebDriverWait(driver, 10).until( EC.element_to_be_clickable((By.XPATH, "//button[@title='下载']")) ) download_btn.click() # 关闭浏览器 driver.quit()
更可靠的替代方案:直接下载视频源
如果点击控件按钮遇到定位困难,直接获取视频的真实下载链接会更稳定,还能避开修改HTML导致的视频加载问题:
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 import requests driver = webdriver.Chrome() driver.get("你的目标页面URL") # 获取source标签里的视频链接 source = WebDriverWait(driver, 10).until( EC.presence_of_element_located((By.TAG_NAME, "source")) ) video_url = source.get_attribute("src") driver.quit() # 用requests下载视频 with open("downloaded_video.mp4", "wb") as f: f.write(requests.get(video_url).content)
注:如果视频链接带防盗链,可从Selenium的driver中提取当前请求的Cookie、Referer等头信息,添加到requests的请求参数里。
内容的提问来源于stack exchange,提问作者raul g h
相关产品推荐
相关产品推荐

