为了能够使用python代码从Facebook上提取数据,你需要在Facebook上注册成为一个开发者,然后拥有一个访问令牌。以下是其步骤。
前往链接 developers.facebook.com,在那里创建一个账户。 前往
链接 developers.facebook.com/tools/explorer。 进入 "我的应用程序 "下拉
在右上角,选择 "添加新的应用程序"。选择一个
显示名称和类别,然后 "创建应用程序ID"。 再次回到
到同一个链接 developers.facebook.com/tools/explorer。你会看到
"Graph API Explorer",位于右上角的 "My Apps "下面。 从
"Graph API Explorer "下拉,选择你的应用程序。然后,选择 "获取
Token"。从这个下拉菜单中,选择 "获取用户访问令牌"。从出现的菜单中选择
权限,然后选择 "Get Access
令牌"。 转到链接 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"、"request",如果它们已经可用。如果没有,请下载这些库。定义一个变量token,并将其值设置为你上面得到的 "用户访问令牌"。
token= ‘aiufniqaefncqiuhfencioaeusKJBNfljabicnlkjshniuwnscslkjjndfi’
获得事件列表。
现在要找到任何搜索词的事件信息,例如 "诗歌",并将这些事件的数量限制在10000个。
graph = facebook.GraphAPI(access_token=token, version = 2.7)
events = graph.request(‘/search?q=Poetry&type=event&limit=10000’)
这将提供一个在Facebook上创建的、名称中带有 "诗歌 "字样的所有事件的字典。要获得事件列表,请执行。
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)