代码之家  ›  专栏  ›  技术社区  ›  pookie

Youtube API“nextPageToken”在“using order=relevance”时中断

  •  1
  • pookie  · 技术社区  · 7 年前

    我正在使用Python3对视频中的所有评论进行分页。 假设随机选择的视频具有 GFphNr0FK-0 . 截至目前,共有5450条评论。

    我正在翻阅检索到的结果并检查是否存在错误 nextPageToken 钥匙在。如果有,我从中获取值并继续循环,直到该键不再存在。

    page ,我将注释附加到列表中。我得到1600条评论(16页,每页100条评论),然后我开始得到400条错误。

    下一个开始 ,我看到每一个请求都变得越来越长。。。我没有附加任何东西到它和它是字面上检索使用 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 querystring参数,按预期工作。。。。

    为什么会呢 &order=relevance 在16页之后它就断了??

    0 回复  |  直到 7 年前