我正在使用 Facebook 的 Graph API 从公共页面获取大量评论。
默认情况下,facebook 每个响应返回 25 条评论,并使用分页。这导致需要多个请求,因为我知道前面会有很多评论,这是 uneccesery。
我阅读了有关“限制”参数的信息,您可以传递该参数以要求每个响应提供一定数量的项目。
我想知道,该参数的限制是什么?我假设我不能通过 &limit=10000。
我正在使用 Facebook 的 Graph API 从公共页面获取大量评论。
默认情况下,facebook 每个响应返回 25 条评论,并使用分页。这导致需要多个请求,因为我知道前面会有很多评论,这是 uneccesery。
我阅读了有关“限制”参数的信息,您可以传递该参数以要求每个响应提供一定数量的项目。
我想知道,该参数的限制是什么?我假设我不能通过 &limit=10000。
获取评论有另一种方式:
https://graph.facebook.com/<PAGE_ID>_<POST_ID>/comments?limit=500
限制参数的最大值为 500。
是的,使用限制参数,您可以在一次调用中传递您想要的特定资源数量。默认限制为 25。
例如。如果您想在一次调用中对具有 id 的帖子发表 100 条评论POST_ID
,您可以这样查询:
https://graph.facebook.com/POST_ID?fields=comments.limit(100)
I think they have changed this. For /feed? I only get 200-225 posts back but for comments I get as many as 2000 back
老问题,但这是在当前的 Facebook 文档中,以防有人通过搜索找到这个问题(强调我的):
出于性能原因,某些边缘也可能具有最大限制值。在所有情况下,API 都会返回正确的分页链接。
换句话说,即使您指定了超出端点允许的限制,“pagination.previous”和“pagination.next”元素将始终提供正确的 URL 以从中断处继续。
我建议您改用 FQL。
FQL 提供了一种更灵活的方法,您可以根据需要组合数据类型(帖子、用户、页面等)。您还可以查询属于故事列表的评论,而不仅仅是一个限制您的请求数量的评论。
但是有几个缺点:
1. 有 5000 条评论的限制。在这里,您将使用类似于以下内容的查询:“SELECT id, ...... FROM comments, ... WHERE parent_id in (1,2,3....) ORDER BY time LIMIT 0, 5000”。即使您使用“LIMIT 0, 1000”、“LIMIT 1000, 1000”、LIMIT 2000、1000 等将其拆分为多个查询,但您永远不会得到超过 5000 条评论(“LIMIT 5000, 1000”将返回空的)。
2. 在 Facebook 的服务器上发出的所有真实请求都算作一次请求。您可以发送实际上是请求组合的内容,这将被视为多个请求。
3. Facebook 不喜欢繁重的请求。您最终可能会在更短的时间内被阻止(分钟 -> 小时,而不是几天)。如果发生这种情况,