以合法方式从 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 代码?

Webpack:从条目和子块中提取公共模块以分离公共块

保存 api Facebook 数据以在不同的 ViewController swift iOS 中使用

获取给定区域的所有公共 Facebook 活动?

无论其编写方式如何,如何从 URL 中提取参数?