Facebook帖子点赞用户爬取:GraphQL API分页参数求助
如何实现Facebook GraphQL点赞数据的分页获取
你目前通过https://www.facebook.com/api/graphql/获取帖子点赞用户时,每次返回10条数据的分页逻辑,核心靠cursor参数实现,具体步骤如下:
1. 从API响应中提取分页标记
每次调用API后,响应的JSON数据里会包含page_info字段,其中:
end_cursor:下一页数据的起始游标has_next_page:布尔值,标识是否还有更多数据未获取
示例响应结构(简化版):
{ "data": { "feedback": { "top_reactions": { "edges": [/* 当前页的点赞用户数据 */], "page_info": { "end_cursor": "AQxxxxxxxxx", "has_next_page": true } } } } }
2. 修改请求参数发起下一页请求
将下一次POST请求中variables参数里的cursor值,替换为上一次响应里的end_cursor,保持count参数不变(你当前设置的是10,也可以尝试调整为更大值,但Facebook可能有上限限制)。
比如修改后的请求variables示例:
{ "count":10, "cursor":"AQxxxxxxxxx", // 替换为上一次的end_cursor "feedbackTargetID":"ZmVlZGJhY2s6ODE5NzIwNjU5NTAzOTY1", "reactionID":null, "scale":1, "id":"ZmVlZGJhY2s6ODE5NzIwNjU5NTAzOTY1" }
对应的cURL请求,只需更新-d参数里的variables部分即可。
3. 循环请求直到获取全部数据
每次请求后检查has_next_page:
- 如果为
true,继续用新的end_cursor发起请求 - 如果为
false,说明所有点赞数据已获取完成
注意事项
- 会话参数(如
cookie、fb_dtsg、lsd)会过期,需要定期从Facebook页面的请求中重新抓取 - 避免高频请求,建议每次请求间隔几秒,防止账号被限制
feedbackTargetID和id参数要对应目标帖子的ID,不要随意修改
内容的提问来源于stack exchange,提问作者Theerastillhere
相关产品推荐
相关产品推荐

