【问题标题】:Youtube API 'nextPageToken' breaks when 'using order=relevance'Youtube API 'nextPageToken' 在'使用 order=relevance' 时中断
【发布时间】:2018-11-27 12:24:10
【问题描述】:

我正在使用 python 3 对视频中的所有 cmets 进行分页。 假设随机选择的视频具有 id GFphNr0FK-0。截至目前,共有5450 cmets。

我正在对检索到的结果进行分页,并检查是否存在 nextPageToken 键。如果有,我会从中获取值并继续循环,直到该键不再存在。

每次迭代或page,我都会将 cmets 添加到列表中。我达到 1600 cmets(16 页,每页 100 cmets),然后我开始收到错误 400。

当我检查nextPageToken 时,我发现每次请求都会变得越来越长...我没有在其上附加任何内容,而是使用page_info['nextPageToken'] 进行检索。

为了清楚起见,这是我的分页:

self.COMMENT_URL_PAGED = 'https://www.googleapis.com/youtube/v3/commentThreads?part=snippet&maxResults=100&order=relevance&videoId={videoId}&key={key}'

if 'nextPageToken' not in page_info:
    run = False
else:
    next_page_token = page_info['nextPageToken']

while run:

    page_info = requests.get(self.COMMENT_URL_PAGED.format(videoId = video_id, key = self.KEY, pageToken = next_page_token))

    while page_info.status_code != 200:
        time.sleep(10)
        page_info = requests.get(self.COMMENT_URL_PAGED.format(videoId = video_id, key = self.KEY, pageToken = next_page_token))
        print('Something went wrong. Token is: {}'.format(next_page_token))

    page_info = page_info.json()

    for i in range(len(page_info['items'])):
        comments.append(page_info['items'][i]['snippet']['topLevelComment']['snippet']['textOriginal'])

    if 'nextPageToken' not in page_info:
        run = False
        next_page_token = None
    else:
        next_page_token = page_info['nextPageToken']

有什么明显不正确的地方吗?

更新

所以,我发现如果我删除 order 查询字符串参数,它会按预期工作....

为什么&order=relevance 会导致它在 16 页后中断??

【问题讨论】:

    标签: python-3.x python-requests youtube-data-api


    【解决方案1】:

    谢谢你的问题,这可能是我的问题的解决方案。

    同样的问题,唯一不同的是,该响应以 200 OK 结束,items 为空。

    【讨论】:

      猜你喜欢
      • 2017-11-29
      • 2018-08-01
      • 2019-08-05
      • 2021-10-16
      • 1970-01-01
      • 2016-05-25
      • 1970-01-01
      • 2021-07-20
      • 2017-09-20
      相关资源
      最近更新 更多