如何从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
相关产品推荐
相关产品推荐

