You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

开发YouTube视频下载器:如何用Python获取视频标题、时长及预览图?

使用Python获取YouTube视频信息的解决方案

依赖安装

先安装专门处理YouTube视频的pytube库,比直接解析HTML稳定得多:

pip install pytube requests

完整代码实现

from pytube import YouTube
import requests

def fetch_youtube_video_info(video_url):
    # 初始化YouTube对象
    yt = YouTube(video_url)
    
    # 获取并打印标题
    video_title = yt.title
    print(f"视频标题:{video_title}")
    
    # 处理时长(秒转时分秒格式)并打印
    total_seconds = yt.length
    hours = total_seconds // 3600
    minutes = (total_seconds % 3600) // 60
    seconds = total_seconds % 60
    formatted_duration = f"{hours:02d}:{minutes:02d}:{seconds:02d}"
    print(f"视频时长:{formatted_duration}")
    
    # 下载并保存预览图
    thumbnail_link = yt.thumbnail_url
    response = requests.get(thumbnail_link)
    if response.status_code == 200:
        # 处理标题中的非法字符,避免保存失败
        safe_filename = "".join([c for c in video_title if c not in '/\\:*?"<>|'])
        save_path = f"{safe_filename}_preview.jpg"
        with open(save_path, "wb") as img_file:
            img_file.write(response.content)
        print(f"预览图已保存至:{save_path}")
    else:
        print("预览图下载失败")

# 调用示例
if __name__ == "__main__":
    target_url = input("请输入YouTube视频链接:")
    fetch_youtube_video_info(target_url)

关键说明

  • 标题、时长、预览图均通过pytube直接调用YouTube的接口获取,无需解析HTML,避免页面结构变动导致失效
  • 时长自动转换为HH:MM:SS的易读格式
  • 预览图保存时自动过滤标题中的非法字符,确保文件能正常写入

关于lxml失败的原因

YouTube页面核心信息多为JavaScript动态渲染,静态HTML中并不包含完整的时长、预览图地址等数据,直接用lxml解析静态源码自然拿不到有效内容。pytube会模拟合法请求从官方接口拉取数据,稳定性远高于直接解析页面。

内容的提问来源于stack exchange,提问作者noname

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.03 23:45:47