我正在使用Facebook Graph API从公共页面抓取信息。目前的问题是如何获得Facebook页面上的帖子总数。如果我们转到/ {page-id} / posts,它将只返回此页面上发布的25个帖子,并且没有摘要信息提到该页面的字段。我已经检查了上一个答案,似乎唯一的方法是计算下一个链接的项目数并获得总数。但效率很低。是否有任何方法可以直接在FQL以外的页面上获取总帖子?
答案 0 :(得分:2)
Facebook没有主动计算网页发布的帖子数量;根据页面,它可能是一个天文数字。
您必须自己获取所有帖子并通过它们计算。我会用这样的东西。
{PAGE}/posts?fields=id&limit=250
它将返回您需要的最小可能数据集。你不能超过250,你可以使用FQL但不能使用v2.1。此外,您不需要FEED,因为这是页面的帖子和其他用户对页面发布的帖子的聚合。这将返回这样的对象。
{
"data" : [
PostData
... ],
"paging" : {
...
"next" : CursorURL
}
}
这是光标网址,因此您可以按相反的时间顺序降低250个帖子的组。
每次获得也会返回更多帖子的新光标时,您可以通过递增250来缩短计数。由于最后一个光标将返回一个空数据数组,因此您只需计算并在第2到最后一个光标的集合中添加结果。
答案 1 :(得分:2)
function p_post() {
FB.api("/209652442394600/posts?fields=admin_creator,name&limit=250", function (response) {
var t = response.data.length;
document.getElementById('tposts').innerHTML = t;
});
}
它工作到250,我上周使用它
答案 2 :(得分:0)
您只能检索页面上已发布帖子的摘要/计数。直接查询网页时,类似的方法会起作用:
ArrayList<Integer> i = new ArrayList<Integer>();
i.add(1);
i.add(1);
i.add(3);
i.add(5);
响应将类似于:
{PAGE}?fields=published_posts.limit(1).summary(total_count).since(1)
或者如果您想直接查询{
published_posts: {
summary: {
total_count: 12345
},
...
}
}
,请使用:
published_posts
响应将类似于:
{PAGE}/published_posts?limit=1&summary=total_count&since=1
将{
summary: {
total_count: 12345
},
...
}
设置为1可确保您的查询不会不必要地大。如果您只需要总数,则将limit
设置为1。
limit
参数是unix时间戳(自1970年1月1日以来的毫秒数),并且它是检索总帖子数所必需的。将其设置为1,因为将其设置为0会引发错误。
更多详细信息:https://developers.facebook.com/docs/graph-api/reference/page/published_posts/
答案 3 :(得分:-1)
您可以尝试添加/page/posts?limit=1000
,但我不确定是否有效。您也可以尝试使用/page/feed
查看是否获得了所需的结果。如果这些都不起作用,那么很可能您无法检索帖子的总数。此外,FQL明年将被弃用。