python如何通过链接下载保存视频
在Python中下载MP4视频通常可以通过以下几种方法实现,具体选择取决于视频来源和需求:
1. 使用requests
库(通用HTTP下载)
适用于已知视频URL的场景:
import requestsurl = "https://example.com/video.mp4" # 替换为实际视频URL
response = requests.get(url, stream=True)if response.status_code == 200:with open("video.mp4", "wb") as f:for chunk in response.iter_content(chunk_size=1024):if chunk:f.write(chunk)
2. 使用pytube
库(YouTube专用)
针对YouTube视频的高效下载工具:
from pytube import YouTubeurl = "https://www.youtube.com/watch?v=dQw4w9WgXcQ" # YouTube视频URL
yt = YouTube(url)
stream = yt.streams.filter(progressive=True, file_extension="mp4").order_by("resolution").desc().first()
stream.download(output_path="./")
3. 使用youtube-dl
(通用视频平台)
支持YouTube/B站等数百个平台:
import youtube_dloptions = {'format': 'bestvideo[ext=mp4]+bestaudio[ext=m4a]/best[ext=mp4]','outtmpl': '%(title)s.%(ext)s'
}
with youtube_dl.YoutubeDL(options) as ydl:ydl.download(["https://www.bilibili.com/video/BV1xx411c7BF"]) # 替换为实际URL
4. 浏览器自动化(需要登录/复杂页面)
使用Selenium处理需要登录或动态加载的页面:
from selenium import webdriver
from selenium.webdriver.common.by import Bydriver = webdriver.Chrome()
driver.get("https://example.com/video-page")
video_url = driver.find_element(By.ID, "videoPlayer").get_attribute("src")
# 然后使用requests下载
注意事项:
- 合法性:确保下载行为符合网站条款及版权法规
- 稳定性:大文件建议添加重试机制和进度条(可用
tqdm
库) - 格式兼容:部分平台视频可能为分片格式(如m3u8),需特殊处理
- 代理设置:访问受限平台时可能需要配置代理
建议优先使用pytube
或youtube-dl
等专业工具,它们已处理了大部分平台特性(如分块下载、自动解密等)。若需下载私有视频,需先通过开发者工具获取真实视频URL后再用requests
下载。