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 进行分页