如何通过Facebook OpenGraph检索所有帖子评论/喜欢



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

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

我注意到类似的结果在较小规模的评论

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

使用较小的限制(例如默认的25),我注意到当我遍历分页链接时返回的结果数量是单调地减少的,这看起来真的很奇怪。

有什么想法可以导致这种行为和如何解决它?

如果你正在寻找一个特定帖子的每个喜欢/评论的名称列表,我认为你会遇到API限制(即使有分页)。

如果您只是在寻找喜欢、评论、分享或链接点击的总数,则只需使用post端点中提供的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)

您可以使用下面的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部分中获得。

最新更新