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

如何从YouTube API响应提取指定键 用pandas快速解析导出CSV

基于Pandas的YouTube API V3响应高效解析方案

核心使用Pandas内置的pd.json_normalize()函数实现嵌套JSON的批量打平提取,完全不需要手动循环遍历条目,2500条数据的解析耗时可以控制在毫秒级,远高于原生Python循环的效率。

实现逻辑

  • pd.json_normalize()可以自动将嵌套的JSON结构打平为二维表,你需要的三个字段打平后对应的列名分别为id.videoId、snippet.title、snippet.channelTitle,直接提取这三列即可
  • 写入CSV时通过mode='a'参数实现追加写入,仅第一页写入表头,后续分页写入时跳过表头避免重复

完整示例代码

import pandas as pd
from googleapiclient.discovery import build

# 初始化YouTube API客户端
API_KEY = "你的API密钥"
youtube = build('youtube', 'v3', developerKey=API_KEY)

# 搜索参数配置
search_params = {
    'q': '你的搜索关键词',
    'part': 'id,snippet',
    'maxResults': 50,
    'type': 'video' # 限定仅返回视频结果,避免出现无videoId的条目
}

next_page_token = None
# 循环拉取所有分页
while True:
    if next_page_token:
        search_params['pageToken'] = next_page_token
    # 调用API获取响应
    response = youtube.search().list(**search_params).execute()
    
    # 核心解析逻辑:直接打平items列表,提取指定字段
    df = pd.json_normalize(response['items'])[['id.videoId', 'snippet.title', 'snippet.channelTitle']]
    # 重命名列名,符合常规使用习惯
    df.columns = ['videoId', 'title', 'channelTitle']
    
    # 写入CSV,第一页带表头,后续页追加不带表头
    df.to_csv('youtube_result.csv', mode='a', index=False, encoding='utf-8-sig', header=not next_page_token)
    
    # 判断是否还有下一页
    next_page_token = response.get('nextPageToken')
    if not next_page_token:
        break

额外优化建议

  • 如果需要过滤非视频类结果,可以在打平后增加过滤逻辑:df = df[df['id.kind'] == 'youtube#video'],避免出现空的videoId
  • 若后续需要扩展提取其他嵌套字段,只需要在列表中追加对应的点分隔路径即可,不需要修改解析逻辑

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 09:24:01