对于大学的一个项目,我需要从相同的Facebook页面提取数据,例如帖子和评论。几个月前一切都很好,但现在要从页面获取数据,您需要“公共页面内容访问”。
为了审核我的应用程序,我需要添加:
[作为只需要为考试提取一些数据的学生,我在使用该应用程序时没有任何网站/平台。我在Python上使用Facebook Graph API。我在this website上查找了隐私权政策生成器,但我没有使用API的任何网站或移动应用程序...
我的处境是否有某种方式可以通过API来提取数据而又没有此要求,或者对我来说,寻找其他解决方案(例如Web抓取更好)?
为了能够使用python代码从Facebook提取数据,您需要在Facebook上注册为开发人员,然后拥有访问令牌。这是它的步骤。
转到链接developers.facebook.com,在此处创建一个帐户。去链接developers.facebook.com/tools/explorer。转到“我的应用”下拉菜单在右上角,然后选择“添加新应用”。选择一个显示名称和类别,然后“创建应用ID”。再次回来到相同的链接developers.facebook.com/tools/explorer。你会看见右上角“我的应用”下方的“图形API资源管理器”。从在“图形API资源管理器”下拉菜单中,选择您的应用。然后,选择“获取令牌”。从此下拉列表中,选择“获取用户访问令牌”。选择出现的菜单中选择“权限”,然后选择“获取访问权限令牌。”转到链接developers.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’]
从上面提取的事件列表中提取事件的所有信息:通过
获取列表中第一个事件的EventIDeventid = 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/并查看文档中的“边缘”部分。