如何通过Facebook OpenGraph获取所有帖子评论/点赞

20 投票
2 回答
2937 浏览
提问于 2025-04-17 20:15

我正在尝试通过Facebook的opengraph API获取特定帖子上的评论和点赞信息。虽然我能收到一些信息,但这些信息有时和帖子上提到的评论/点赞数量不一致。我猜这可能和我使用的访问令牌的权限有关。不过,我注意到根据我使用的请求限制,结果会有所不同,有时还会在请求之间出现重复的条目。

举个例子,帖子10376464573_150423345118848在我写这段话时大约有14000个点赞,但我最多只能获取到大约5000个。使用默认的限制25,我最多能获取到3021个点赞。设置为100时能得到4501个,而设置为1000、2000、3000和5000时都返回相同的点赞数量4959(当然,这些具体数字并不太重要,只是为了比较)。

我在评论方面也注意到了类似的情况,只不过规模小一些。

我使用一个简单的Python脚本来获取页面。这个脚本会按照Facebook提供的分页链接逐页获取数据,并把每一页的数据写入一个单独的文件。一旦遇到空回复,它就会停止。

在使用小的限制(例如默认的25)时,我发现随着我浏览分页链接,返回的结果数量是单调递减的,这看起来真的很奇怪。

你觉得是什么原因导致了这种情况?有没有什么解决办法?

2 个回答

1

你可以通过下面的链接或者接口来获取某个帖子下的评论、点赞数或者其他信息。

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)

这里的顺序是按时间排列的,所以你需要在同一个链接中使用一个叫做“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)

撰写回答