Python Facebook API - cursor pagination

后端 未结 3 1462
傲寒
傲寒 2021-02-09 08:10

My question involves learning how to retrieve my entire list of friends using Facebook\'s Python API. The current result returns an object with limited number of friends

3条回答
  •  自闭症患者
    2021-02-09 09:08

    Sadly the documentation of pagination is an open issue since almost 2 years. You should be able to paginate like this (based on this example) using requests:

    import facebook
    import requests
    
    ACCESS_TOKEN = "my_token"
    graph = facebook.GraphAPI(ACCESS_TOKEN)
    friends = graph.get_connections("me","friends")
    
    allfriends = []
    
    # Wrap this block in a while loop so we can keep paginating requests until
    # finished.
    while(True):
        try:
            for friend in friends['data']:
                allfriends.append(friend['name'].encode('utf-8'))
            # Attempt to make a request to the next page of data, if it exists.
            friends=requests.get(friends['paging']['next']).json()
        except KeyError:
            # When there are no more pages (['paging']['next']), break from the
            # loop and end the script.
            break
    print allfriends
    

    Update: There's a new generator method available which implements above behavior and can be used to iterate over all friends like this:

    for friend in graph.get_all_connections("me", "friends"):
        # Do something with this friend.
    

提交回复
热议问题