如何通过Facebook OpenGraph检索所有帖子的评论/点赞

20

我正在尝试通过Facebook的opengraph API检索特定帖子的评论和点赞。虽然我确实获得了一些信息,但它并不总是与帖子中提到的评论/点赞数匹配。我想这可以归因于我使用的令牌的访问权限。但是,我注意到结果取决于我使用的请求限制,有时我还会在请求之间获得重复条目。

例如,截至本写作时,帖子10376464573_150423345118848有大约14000个赞,但我最多只能检索到约5000个赞。默认限制为25时,我最多可以获得3021个赞。值为100的限制为4501,而1000、2000、3000和5000的限制都返回相同数量的赞,即4959(当然绝对值并没有太多意义,它们只是用于比较)。

我注意到评论也有类似的结果。

我正在使用一个简单的Python脚本来获取页面。它按照Facebook提供的分页链接浏览数据,将每个检索到的页面写入单独的文件。一旦遇到空回复它就停止。

当限制较小时(例如默认的25),我注意到随着我浏览分页链接,返回的结果数量单调递减,这似乎非常奇怪。

有什么想法可以解释这种行为,以及如何解决它吗?


我认为有一个5000个对象的限制。Facebook的5000帖子API限制 突破Facebook API中的5000个对象限制 - N. Mauchle
没有5000的限制,您可以轻松检索Lady Gaga帖子的所有赞(目前约为20,000)。 - lars.schwarz
2个回答

1
你可以使用以下的url或api检索特定帖子的评论、点赞数或其他信息。
https://graph.facebook.com/{0}/comments?access_token={1}&limit={2}&fields=from,message,message_tags,created_time,id,attachment,like_count,comment_count,parent&order=chronological&filter=stream'.format(post_id,access_token,limit)

由于此处的顺序是按时间顺序指定的,因此您需要在同一URL中使用after参数,其值可以在第一个响应的paging.cursor.after部分中获取。

1
如果你想要获取特定帖子上每个赞/评论的名称清单,我认为你会遇到API限制(即使进行分页)。
如果你只是想获取点赞数、评论数、分享数或链接点击数的总数,你可以使用帖子端点提供的summary=true参数。就像这样:
try:
    endpoint = 'https://graph.facebook.com/v2.5/'+postid+'/comments?summary=true&access_token='+apikey
    response = requests.get(endpoint)
    fb_data = response.json()
    return fb_data

您还可以检索任何特定页面的所有帖子及其摘要数据点:
{page_id}/posts?fields=message,likes.limit(1).summary(true)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接