Python Facebook API - 光标分页

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python Facebook API - 光标分页相关的知识,希望对你有一定的参考价值。

我的问题涉及学习如何使用Facebook的Python API检索我的整个朋友列表。当前结果返回一个具有有限数量的朋友的对象和一个指向“下一页”的链接。我如何使用它来获取下一组朋友? (请将链接发布到可能的重复项)任何帮助将不胜感激。一般来说,我需要了解API使用的分页。

import facebook
import json

ACCESS_TOKEN = "my_token"

g = facebook.GraphAPI(ACCESS_TOKEN)

print json.dumps(g.get_connections("me","friends"),indent=1)
答案

可悲的是,分页的文档是一个公开的问题since almost 2 years。你应该能够使用this example这样分页(基于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
另一答案

同时我在这里寻找答案是更好的方法:

import facebook
access_token = ""
graph = facebook.GraphAPI(access_token = access_token)

totalFriends = []
friends = graph.get_connections("me", "/friends&summary=1")

while 'paging' in friends:
    for i in friends['data']:
        totalFriends.append(i['id'])
    friends = graph.get_connections("me", "/friends&summary=1&after=" + friends['paging']['cursors']['after'])

在结束时,您将得到一个响应,其中数据将为空,然后将没有“分页”键,因此此时它将中断并且所有数据都将被存储。

另一答案

在这个例子中,你当时关闭设置/分页,我认为我的while循环很简单,因为它只查找分页键“next”为none,如果不存在意味着我们完成循环,你将得到你的结果在列表中。在这个例子中,我只是在找所有人打电话给雅各布

import requests
import facebook

token = access_token="your token goes here"
fb = facebook.GraphAPI(access_token=token)
limit = 1
offset = 0
data = {"q": "jacob",
        "type": "user",
        "fields": "id",
        "limit": limit,
        "offset": offset}
req = fb.request('/search', args=data, method='GET')

users = []
for item in req['data']:
    users.append(item["id"])

pag = req['paging']
while pag.get("next") is not None:
    offset += limit
    data["offset"] = offset
    req = fb.request('/search', args=data, method='GET')
    for item in req['data']:
        users.append(item["id"])
    pag = req.get('paging')
print users

以上是关于Python Facebook API - 光标分页的主要内容,如果未能解决你的问题,请参考以下文章

使用 Apollo-Server-Express 从服务器中使用光标分页查询 REST API

Facebook Open Graph API:获取分页用户新闻提要时参数限制的奇怪行为

iOS Facebook Graph API 使用“下一个”或“上一个”Url 使用 SDK 进行分页

使用Phonegap Facebook Connect Plugin API的离子框架无法使朋友分页工作

python Facebook即时文章API

Facebook 聊天 API - Python App Engine