以合法方式从 Facebook 提取公共数据
Posted
技术标签:
【中文标题】以合法方式从 Facebook 提取公共数据【英文标题】:Extracting public data from Facebook in a legal way 【发布时间】:2018-11-22 22:08:28 【问题描述】:我想制作一个需要从 facebook 收集一些公共数据的应用程序。 具体来说,我需要检查公共帖子上的反应和 cmet。
我注意到两件事: 首先,根据https://www.facebook.com/apps/site_scraping_tos_terms.php, 除非 facebook 给予您书面许可,否则不允许抓取。 (无论如何我如何请求许可?) 其次,据我所知,图形 api 不允许获取有关其他用户/页面发布的帖子的信息。我错了吗?
我如何以合法的方式获得我需要的信息,甚至有可能吗?
【问题讨论】:
你可以得到其他页面的信息,你只需要通过一个审查过程,就这样。 【参考方案1】:要在页面中获取公共帖子以及对这些帖子的反应和 cmets,您的应用需要页面公共内容访问权限。如果您尚未创建应用程序,您可以在此链接中找到如何执行此操作,以及如何在此 link 中查看您的应用程序的权限。
获得许可后,您可以使用以下 API 请求从页面获取公开帖子:
https://graph.facebook.com/<PAGE_ID>/posts?access_token=<ACCESS_TOKEN>&fields=name
从上述请求的响应中获取您需要详细信息的帖子ID
然后您可以使用以下请求根据帖子 id 获取帖子的反应和 cmets
获取总反应:
https://graph.facebook.com/<POST_ID>?fields=reactions.summary(true)&access_token=<ACCESS_TOKEN>
获取特定类型的总反应(无、喜欢、爱、哇、哈哈、悲伤、愤怒、感谢、自豪):
https://graph.facebook.com/<POST_ID>?fields=reactions.summary(true).type(<REACTION_TYPE>)&access_token=<ACCESS_TOKEN>
获取 cmets:
https://graph.facebook.com/<POST_ID>?access_token=<ACCESS_TOKEN>&fields=comments.summary(true).limit(999).filter(stream).fields(id,message,created_time,parent)
对于用户的公开帖子,如果帖子是公开的,您将能够通过提供帖子 ID 来获得相同请求的总反应,但您无法获得 cmets,但您将获得 cmets 计数
【讨论】:
以上是关于以合法方式从 Facebook 提取公共数据的主要内容,如果未能解决你的问题,请参考以下文章
如何获取 Facebook 公共页面内容访问权限只是为了提取数据?
UIWebView - 如何从 Facebook 等网页中提取 HTML 代码?