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

如何通过YouTube API(Python)提取视频标题

问题解决:YouTube API提取视频标题失败的修复方案

问题背景

开发个人Python应用,基于YouTube API获取视频信息:

  • 已实现获取视频评论及回复并导出至Excel的功能
  • 尝试提取视频标题时代码无法正常运行,先后参考教程视频、求助教程作者、查阅官方文档均未解决问题

错误代码分析

原代码仅调用commentThreads.list接口获取评论,尝试从该接口返回数据中提取视频标题,存在路径错误或数据获取不完整的问题,示例错误代码如下:

from googleapiclient.discovery import build
import pandas as pd

API_KEY = "你的API密钥"
youtube = build('youtube', 'v3', developerKey=API_KEY)

# 仅请求评论相关资源
comment_request = youtube.commentThreads().list(
    part="snippet,replies",
    videoId="视频ID",
    maxResults=100
)
comment_response = comment_request.execute()

# 错误:尝试从评论接口数据中提取标题,可能因字段不存在或路径错误报错
video_title = comment_response['items'][0]['snippet']['videoTitle']

修复后的完整代码

通过调用videos.list接口专门获取视频基本信息(含标题),再结合评论接口数据完成导出功能,完整可运行代码如下:

from googleapiclient.discovery import build
import pandas as pd

def get_youtube_video_info(video_id, api_key):
    youtube = build('youtube', 'v3', developerKey=api_key)
    
    # 获取视频标题等基本信息
    video_request = youtube.videos().list(
        part="snippet",
        id=video_id
    )
    video_response = video_request.execute()
    video_title = video_response['items'][0]['snippet']['title']
    
    # 批量获取评论及回复
    comments = []
    comment_request = youtube.commentThreads().list(
        part="snippet,replies",
        videoId=video_id,
        maxResults=100
    )
    comment_response = comment_request.execute()
    
    while comment_response:
        for item in comment_response['items']:
            # 处理主评论
            main_comment = item['snippet']['topLevelComment']['snippet']
            comments.append({
                '视频标题': video_title,
                '评论作者': main_comment['authorDisplayName'],
                '评论内容': main_comment['textDisplay'],
                '发布时间': main_comment['publishedAt'],
                '回复对象': ''
            })
            # 处理评论回复
            if 'replies' in item:
                for reply in item['replies']['comments']:
                    reply_snippet = reply['snippet']
                    comments.append({
                        '视频标题': video_title,
                        '评论作者': reply_snippet['authorDisplayName'],
                        '评论内容': reply_snippet['textDisplay'],
                        '发布时间': reply_snippet['publishedAt'],
                        '回复对象': main_comment['textDisplay']
                    })
        # 分页加载更多评论
        if 'nextPageToken' in comment_response:
            comment_request = youtube.commentThreads().list(
                part="snippet,replies",
                videoId=video_id,
                pageToken=comment_response['nextPageToken'],
                maxResults=100
            )
            comment_response = comment_request.execute()
        else:
            break
    
    # 导出数据到Excel
    df = pd.DataFrame(comments)
    output_filename = f'{video_title}_评论数据.xlsx'
    df.to_excel(output_filename, index=False)
    print(f"数据已成功导出至 {output_filename}")

# 执行示例
if __name__ == "__main__":
    YOUR_API_KEY = "你的API密钥"
    TARGET_VIDEO_ID = "目标视频ID"
    get_youtube_video_info(TARGET_VIDEO_ID, YOUR_API_KEY)

修复说明

  1. 核心修正:使用videos.list接口并指定part="snippet",直接获取视频的标题信息,避免从评论接口提取的不确定性
  2. 功能优化:添加评论分页处理,支持获取超过100条的评论及回复数据
  3. 数据整合:将视频标题同步到每条评论数据中,导出的Excel表格更完整

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.21 19:42:44