使用R爬取Facebook公共页面帖子遇阻求助:仅获取主页发布内容
解决Facebook公共页面社区帖子爬取问题
看起来你遇到的问题是Rfacebook包的getPage()函数默认只能抓取页面官方发布的内容,而不是用户在该页面下发布的社区帖子——这是因为函数参数的对应逻辑和Facebook Graph API的端点设计导致的。
问题根源
getPage()中的feed = TRUE参数对应的是Facebook Graph API的/{page-id}/feed端点,这个端点返回的是页面自身发布的动态,以及页面关注账号的内容,但并不包含普通用户在该页面下发布的社区帖子。用户发帖的数据实际上存储在/{page-id}/community_posts这个专门的端点里。
解决方案
要获取你需要的社区帖子,你需要直接调用community_posts端点,而不是依赖getPage()。以下是具体的R代码步骤:
- 获取目标页面的ID(有些时候用户名需要转成ID才能正确调用端点):
library(Rfacebook) # 获取页面基本信息,提取ID page_details <- getPage(page = "Instacart", token = token, n = 1) instacart_page_id <- page_details$id[1]
- 调用community_posts端点抓取帖子:
使用callAPI()函数直接请求该端点,同时可以指定返回数量和API版本(建议用最新版本避免兼容性问题):
# 请求社区帖子,n设置为你需要的数量 instacart_community_posts <- callAPI( path = paste0("/", instacart_page_id, "/community_posts"), token = token, n = 1500, version = "v18.0" # 替换为当前最新的Graph API版本 )
关键注意事项
- 权限检查:你的访问令牌必须拥有
pages_read_engagement权限。如果是用户令牌,需要在Facebook开发者平台的应用中申请该权限并通过审核;如果是页面令牌,要确保令牌关联了目标页面且具备相应权限。 - 分页处理:如果目标帖子数量超过API单次返回的上限(通常是100条),
callAPI()会自动处理分页,但如果遇到中断,可能需要手动循环获取next分页链接的内容。 - API版本兼容:Facebook Graph API会定期更新,旧版本可能会废弃某些端点,所以务必指定当前支持的最新版本(可以在Facebook开发者文档中查询最新版本号)。
内容的提问来源于stack exchange,提问作者Eiffel
相关产品推荐
相关产品推荐

