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

Youtube Data API:使用nextPageToken获取评论回复返回重复结果问题

解决YouTube API获取评论回复分页重复的问题

问题分析

你遇到的核心问题是使用nextPageToken请求下一页评论回复时,返回结果与第一页完全一致,这通常是请求参数的拼接逻辑或API调用方式存在问题导致的。

可能的原因及解决方案

1. 规范pageToken的传递逻辑

你的代码中直接在初始URL后拼接pageToken,但需注意:

  • 必须使用**上一次响应返回的最新nextPageToken**发起下一页请求
  • 循环请求时不要重复复用初始URL,建议通过参数字典动态管理请求参数,避免拼接错误

2. 显式指定排序参数

YouTube API的comments接口默认按时间排序,但显式指定order=time可以避免潜在的排序异常,确保分页逻辑正常工作。

3. 修正后的完整分页请求代码

以下是可以循环获取所有评论回复的正确示例:

import requests

# 基础请求参数配置
base_url = "https://www.googleapis.com/youtube/v3/comments"
request_params = {
    "part": "snippet,id",
    "parentId": "UgyRYe5L38xhQoviSrF4AaABAg",
    "key": "xx",
    "textFormat": "plainText",
    "maxResults": 100,
    "order": "time"  # 显式指定排序方式
}

all_replies = []
next_page_token = None

while True:
    # 动态添加分页token
    if next_page_token:
        request_params["pageToken"] = next_page_token
    
    # 发起请求并处理响应
    res = requests.get(base_url, params=request_params)
    res.raise_for_status()  # 捕获请求错误
    res_data = res.json()
    
    # 收集当前页的回复内容
    all_replies.extend(res_data.get("items", []))
    
    # 更新分页token,无token则终止循环
    next_page_token = res_data.get("nextPageToken")
    if not next_page_token:
        break

print(f"共获取到 {len(all_replies)} 条评论回复")

4. 额外排查点

  • 验证parentId的正确性:确认该ID对应的父评论确实存在超过100条回复
  • 检查API密钥权限:确保密钥已启用YouTube Data API v3,且剩余配额足够支撑请求
  • 查看响应错误信息:如果存在隐性错误,res_data中会包含error字段,需针对性排查

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.23 10:19:51