如何使用Graph API获取Facebook页面中的帖子总数?

Dav*_*hou 7 facebook facebook-graph-api

我正在使用Facebook Graph API从公共页面抓取信息.目前的问题是如何获得Facebook页面上的帖子总数.如果我们转到/ {page-id}/posts,它将只返回此页面上发布的25个帖子,并且没有摘要信息提到该页面的字段.我已经检查了上一个答案,似乎唯一的方法是计算下一个每个链接的项目数并获得总数.但效率很低.是否有任何方法可以直接在FQL以外的页面上获取总帖子?

Ril*_*air 5

您只能检索页面上已发布帖子的摘要/计数。直接查询页面时,这样的事情会起作用:

{PAGE}?fields=published_posts.limit(1).summary(total_count).since(1)
Run Code Online (Sandbox Code Playgroud)

响应将类似于:

{
    published_posts: {
        summary: {
            total_count: 12345
        },
        ...
    }
}
Run Code Online (Sandbox Code Playgroud)

或者,如果您想published_posts直接查询,请使用:

{PAGE}/published_posts?limit=1&summary=total_count&since=1
Run Code Online (Sandbox Code Playgroud)

响应将类似于:

{
    summary: {
        total_count: 12345
    },
    ...
}
Run Code Online (Sandbox Code Playgroud)

设置limit为 1 可确保您的查询不会过大。如果您只需要总帖子数,则设置limit为 1。

since参数是一个 unix 时间戳(自 1970 年 1 月 1 日以来的毫秒数),需要检索总帖子数。将此设置为 1,因为将其设置为 0 将引发错误。

更多详情:https : //developers.facebook.com/docs/graph-api/reference/page/published_posts/


小智 1

Facebook 不会主动统计某个页面发布的帖子数量;根据页面的不同,它可能是一个天文数字。

您必须获取所有帖子并亲自数一数。我会用这样的东西。

{PAGE}/posts?fields=id&limit=250
Run Code Online (Sandbox Code Playgroud)

它将返回您需要的尽可能小的数据集。您不能超过 250,使用 FQL 可以,但使用 v2.1 则不行。另外,您不需要 FEED,因为这是页面帖子和其他用户在页面上发布的帖子的聚合。这将返回一个像这样的对象。

{
 "data" : [
  PostData
  ... ],
 "paging" : {
  ...
  "next" : CursorURL
 }
}
Run Code Online (Sandbox Code Playgroud)

这是光标 URL,因此您可以按时间倒序顺序向下浏览 250 个帖子组。

您可以通过每次获得新光标时增加 250 来缩短计数,该新光标也会返回更多帖子。您只需使用倒数第二个游标对集合中的结果进行计数和添加,因为最后一个游标将返回空数据数组。

  • @Noah 原来是 250,但现在是 100,如果你输入超过 100,它实际上会给你一个错误,而不是仅仅将结果限制为 100。 (2认同)