如何通过Facebook Graph API稳定获取群组帖子的消息与创建时间?
如何稳定从Facebook Graph API群组帖子中获取message字段?
为什么字段顺序会变化?
其实这个问题很常见——Graph API返回的是JSON格式的数据,而JSON对象的属性本身是没有固定顺序的。虽然Python 3.7及以后的字典会保留插入顺序,但API端返回响应时,完全不保证id、message、created_time这些字段的排列顺序,所以每次请求返回的字段顺序波动是正常现象,不是你的代码哪里写错了。
怎么稳定获取message和created_time字段?
根本不用管字段顺序,直接通过键名访问就好了!你之前的代码是遍历item里的所有键,这才会受顺序影响,改成直接通过键名取值,不管顺序怎么变都能精准拿到你要的内容。而且推荐用get()方法,避免遇到没有message字段的帖子(比如纯图片/链接的帖子)时抛出KeyError。
修改后的代码示例:
groupData = graph.get("*****/feed", page=True, limit=1) for page in groupData: print("===== 分页数据 =====") for item in page["data"]: # 直接通过键名获取,get()方法在字段不存在时返回None,更安全 post_message = item.get("message") post_time = item.get("created_time") # 可以加个判断,跳过没有内容的帖子 if post_message: print(f"创建时间: {post_time}") print(f"帖子内容: {post_message}\n")
这样不管API返回的字段顺序怎么变,你都能稳定拿到message和created_time,完全不受顺序影响。如果需要进一步处理生成词云,直接把post_message收集到列表里就可以了。
内容的提问来源于stack exchange,提问作者Mark
相关产品推荐
相关产品推荐

