如何获取 Facebook 公共页面内容访问权限只是为了提取数据?

Posted

技术标签:

【中文标题】如何获取 Facebook 公共页面内容访问权限只是为了提取数据?【英文标题】:How to get the Facebook Public Page Content Access just to extract data? 【发布时间】:2018-12-15 17:23:24 【问题描述】:

对于大学的一个项目,我需要从相同的 Facebook 页面中提取帖子和评论等数据。几个月前一切正常,但现在要从页面获取数据,您需要公共页面内容访问权限。

为了让我的应用得到审核,我需要添加:

我会使用该应用的平台 显示“人们如何看待您的应用中使用的此功能”的截屏视频 说明我将如何使用 Page Public Content Access 来增强我的应用体验。 隐私政策网址

作为一个只需要为考试提取一些数据的学生,我没有任何可以使用该应用程序的网站/平台。我在 Python 上使用 Facebook Graph API。 我在this website 上查看了隐私政策生成器,但我没有任何网站或移动应用程序可以使用该 API...

在我的情况下,是否有某种方法可以在没有此要求的情况下通过 API 提取数据,或者我最好找到其他解决方案,例如网页抓取?

【问题讨论】:

即使我只需要,例如,评论的文本,而没有关于评论的用户的任何信息等? 【参考方案1】:

为了能够使用 python 代码从 Facebook 提取数据,您需要在 Facebook 上注册为开发人员,然后拥有访问令牌。以下是它的步骤。

去链接developers.facebook.com,在那里创建一个帐户。去 链接developers.facebook.com/tools/explorer。转到“我的应用程序”下拉 在右上角,然后选择“添加新应用”。选择一个 显示名称和类别,然后“创建应用程序 ID”。再回来 到同一个链接developers.facebook.com/tools/explorer。你会看见 右上角“我的应用程序”下方的“Graph API Explorer”。从 “Graph API Explorer”下拉菜单,选择你的应用。然后选择“获取 令牌”。从此下拉列表中,选择“获取用户访问令牌”。选择 从出现的菜单中选择权限,然后选择“获取访问权限” 令牌。”转到链接 developer.facebook.com/tools/accesstoken。选择 “调试”对应“用户令牌”。转到“扩展令牌访问”。 这将确保您的令牌不会每两个小时过期一次。

访问 Facebook 公共数据的 Python 代码: 如果想收集任何公开可用的数据,请转到链接https://developers.facebook.com/docs/graph-api。见https://developers.facebook.com/docs/graph-api/reference/v2.7/。从此文档中,选择要从中提取数据的任何字段,例如“组”或“页面”等。选择这些后转到代码示例,然后选择“facebook graph api”,您将获得有关提示如何提取信息。这个博客主要是关于获取事件数据。 首先,导入“urllib3”、“facebook”、“requests”(如果它们已经可用)。如果没有,请下载这些库。定义一个变量令牌并将其值设置为您在上面得到的“用户访问令牌”。

token= ‘aiufniqaefncqiuhfencioaeusKJBNfljabicnlkjshniuwnscslkjjndfi’

获取事件列表: 现在要查找有关任何搜索词的事件的信息,请说“诗歌”并将这些事件的数量限制为 10000:

graph = facebook.GraphAPI(access_token=token, version = 2.7)
events = graph.request(‘/search?q=Poetry&type=event&limit=10000’)

这将提供在 Facebook 上创建的所有事件的字典,并在其名称中包含字符串“Poetry”。要获取事件列表,请执行以下操作:

eventList = events[‘data’]

从上面提取的事件列表中提取事件的所有信息: 通过

获取列表中第一个事件的EventID
eventid = eventList[1][‘id’]

对于这个 EventID,获取所有信息并设置一些变量,这些变量将被以下人员使用:

event1=graph.get_object(id=eventid,fields=’attending_count,can_guests_invite,category,cover,declined_count,description,end_time,guest_list_enabled,interested_count,is_canceled,is_page_owned,is_viewer_admin,maybe_count,noreply_count,owner,parent_group,place,ticket_uri,timezone,type,updated_time’)
attenderscount = event1[‘attending_count’]
declinerscount = event1[‘declined_count’]
interestedcount = event1[‘interested_count’]
maybecount = event1[‘maybe_count’]
noreplycount = event1[‘noreply_count’]

获取所有参加活动的人员的列表并将响应转换为 json 格式:

attenders = requests.get(“https://graph.facebook.com/v2.7/"+eventid+"/attending? 
access_token="+token+”&limit=”+str(attenderscount)) 
attenders_json = attenders.json()

获取活动管理员:

admins = requests.get(“https://graph.facebook.com/v2.7/"+eventid+"/admins? 
access_token="+token)
admins_json = admins.json()

同样,您可以根据需要提取其他信息,例如该事件的照片/视频/提要。 转到https://developers.facebook.com/docs/graph-api/reference/event/ 并查看文档中的“Edges”部分。

【讨论】:

以上是关于如何获取 Facebook 公共页面内容访问权限只是为了提取数据?的主要内容,如果未能解决你的问题,请参考以下文章

使用没有访问令牌的 Facebook Graph API 获取公共页面状态

获取 facebook 公共页面评分和评论

FB:获取公共页面阅读的访问令牌

如何获得对特定 Facebook 页面或应用程序的管理页面权限?

页面公共内容访问的Facebook App Review过程不适合服务器端脚本

您能否在不要求用户允许的情况下使用 Graph API 获取公共 Facebook 页面的提要?