Python 存储评论URL的Youtube数据Api

Python 存储评论URL的Youtube数据Api,python,python-3.x,youtube,youtube-api,youtube-data-api,Python,Python 3.x,Youtube,Youtube Api,Youtube Data Api,我试图通过数据API存储youtube评论配置文件URL。一切都很好,但我正试图通过nextPageToken浏览所有评论。我可以先给它设置一个值,但它不会改变,代码会进入一个无休止的循环。在循环中打印pageToken只会始终给出相同的值 API_ENDPOINT = 'https://www.googleapis.com/youtube/v3/commentThreads?key=MYKEY&textFormat=plainText&part=snippet&vide

我试图通过数据API存储youtube评论配置文件URL。一切都很好,但我正试图通过nextPageToken浏览所有评论。我可以先给它设置一个值,但它不会改变,代码会进入一个无休止的循环。在循环中打印pageToken只会始终给出相同的值

API_ENDPOINT = 'https://www.googleapis.com/youtube/v3/commentThreads?key=MYKEY&textFormat=plainText&part=snippet&videoId=0DmA_MCIjy8&maxResults=2&order=time'
r = requests.get(url = API_ENDPOINT)
data = r.json()
for items in data['items']:
    store = str(items['snippet']['topLevelComment']['snippet']['authorChannelUrl'])
    channelUrls.append(store)

pageToken = str(data['nextPageToken'])

while pageToken:
    API_ENDPOINT = 'https://www.googleapis.com/youtube/v3/commentThreads?key=MYKEY&textFormat=plainText&part=snippet&videoId=0DmA_MCIjy8&maxResults=2&&pageToken=' + pageToken

    pageToken= str(data['nextPageToken'])
    print(len(channelUrls))
    for items in data['items']:
        store = str(items['snippet']['topLevelComment']['snippet']['authorChannelUrl'])
        channelUrls.append(store)

看起来您缺少对
请求的调用。在while循环中获取

试试这个:

API_ENDPOINT = 'https://www.googleapis.com/youtube/v3/commentThreads?key=MYKEY&textFormat=plainText&part=snippet&videoId=0DmA_MCIjy8&maxResults=2&order=time'
r = requests.get(url = API_ENDPOINT)
data = r.json()
for items in data['items']:
    store = str(items['snippet']['topLevelComment']['snippet']['authorChannelUrl'])
    channelUrls.append(store)

pageToken = str(data['nextPageToken'])

while pageToken:
    API_ENDPOINT = 'https://www.googleapis.com/youtube/v3/commentThreads?key=MYKEY&textFormat=plainText&part=snippet&videoId=0DmA_MCIjy8&maxResults=2&&pageToken=' + pageToken

    r = requests.get(url = API_ENDPOINT)
    data = r.json()
    pageToken= str(data['nextPageToken'])
    print(len(channelUrls))
    for items in data['items']:
        store = str(items['snippet']['topLevelComment']['snippet']['authorChannelUrl'])
        channelUrls.append(store)

看起来您缺少对
请求的调用。在while循环中获取

试试这个:

API_ENDPOINT = 'https://www.googleapis.com/youtube/v3/commentThreads?key=MYKEY&textFormat=plainText&part=snippet&videoId=0DmA_MCIjy8&maxResults=2&order=time'
r = requests.get(url = API_ENDPOINT)
data = r.json()
for items in data['items']:
    store = str(items['snippet']['topLevelComment']['snippet']['authorChannelUrl'])
    channelUrls.append(store)

pageToken = str(data['nextPageToken'])

while pageToken:
    API_ENDPOINT = 'https://www.googleapis.com/youtube/v3/commentThreads?key=MYKEY&textFormat=plainText&part=snippet&videoId=0DmA_MCIjy8&maxResults=2&&pageToken=' + pageToken

    r = requests.get(url = API_ENDPOINT)
    data = r.json()
    pageToken= str(data['nextPageToken'])
    print(len(channelUrls))
    for items in data['items']:
        store = str(items['snippet']['topLevelComment']['snippet']['authorChannelUrl'])
        channelUrls.append(store)

您的代码进入了一个无止境的循环,因为pageToken:
时的循环
缺少对
请求的调用。get(url=API\u ENDPOINT)

while pageToken:
美国石油学会https://www.googleapis.com/youtube/v3/commentThreads?key=MYKEY&textFormat=plainText&part=snippet&videoId=0DmA_MCIjy8&maxResults=2&&pageToken=“+pageToken
r=requests.get(url=API\U端点)
data=r.json()
pageToken=data.get('nextPageToken')
打印(len(channelurl))
对于数据['items']中的项目:
store=str(项目['snippet']['topLevelComment']['snippet']['AuthorChannel URL'])
channelURL.append(存储)
顺便说一下,您可以通过以下方式编写API结果集分页:

API\uhttps://www.googleapis.com/youtube/v3/commentThreads?key=MYKEY&textFormat=plainText&part=snippet&videoId=0DmA_MCIjy8&maxResults=2&order=time'
pageToken=无
channelURL=[]
尽管如此:
url=API_端点
如果pageToken:url+=“&pageToken=“+pageToken
data=requests.get(url=url).json()
对于data.get('items',[])中的项:
store=item['snippet']['topLevelComment']['snippet']['AuthorChannel URL']
channelURL.append(存储)
pageToken=data.get('nextPageToken')
如果不是pageToken:中断
还请注意,您的
API\u端点
URL可能包含以下形式的请求参数:

API_ENDPOINT='…&fields=nextPageToken,items/snippet/topLevelComment/snippet/authorChannelUrl'

最好只从API询问实际使用的信息。

您的代码会进入一个无休止的循环,因为pageToken:
时的循环缺少对
请求的调用。get(url=API\u ENDPOINT)

while pageToken:
美国石油学会https://www.googleapis.com/youtube/v3/commentThreads?key=MYKEY&textFormat=plainText&part=snippet&videoId=0DmA_MCIjy8&maxResults=2&&pageToken=“+pageToken
r=requests.get(url=API\U端点)
data=r.json()
pageToken=data.get('nextPageToken')
打印(len(channelurl))
对于数据['items']中的项目:
store=str(项目['snippet']['topLevelComment']['snippet']['AuthorChannel URL'])
channelURL.append(存储)
顺便说一下,您可以通过以下方式编写API结果集分页:

API\uhttps://www.googleapis.com/youtube/v3/commentThreads?key=MYKEY&textFormat=plainText&part=snippet&videoId=0DmA_MCIjy8&maxResults=2&order=time'
pageToken=无
channelURL=[]
尽管如此:
url=API_端点
如果pageToken:url+=“&pageToken=“+pageToken
data=requests.get(url=url).json()
对于data.get('items',[])中的项:
store=item['snippet']['topLevelComment']['snippet']['AuthorChannel URL']
channelURL.append(存储)
pageToken=data.get('nextPageToken')
如果不是pageToken:中断
还请注意,您的
API\u端点
URL可能包含以下形式的请求参数:

API_ENDPOINT='…&fields=nextPageToken,items/snippet/topLevelComment/snippet/authorChannelUrl'

仅从API中询问实际使用的信息始终是一种好做法。

好的,谢谢!,我正在查看您的其他代码,不幸的是,我收到了KeyError:“nextPageToken”。在最后一页。我认为,仅仅因为上一次不存在“nextPageToken”,你就得到了那个错误?事实上,你是对的!我修正了我的答案。太好了,非常感谢你!好的,谢谢!,我正在查看您的其他代码,不幸的是,我收到了KeyError:“nextPageToken”。在最后一页。我认为,仅仅因为上一次不存在“nextPageToken”,你就得到了那个错误?事实上,你是对的!我修正了我的答案。太好了,非常感谢你!