想要从Facebook抓取用户的兴趣数据

时间:2012-03-07 08:50:26

标签: facebook web-crawler

我是一名学习数据挖掘的学生。而且我遇到了麻烦。

对于我的分析,我试图抓住用户的个人兴趣和他们喜欢的电影,音乐等。我不需要他们的真实姓名或任何敏感数据,但似乎我需要获得每个用户的许可才能能够获得这些信息。我认为我可以轻松获得它,因为它们可以通过Facebook冲浪访问。

所以我想问的是:

  1. 我可以在未经他们许可的情况下获取用户的兴趣信息吗?

  2. 我是否必须使用FQL来抓取这些数据?我在想正确的方法吗?我正在阅读Facebook提供的手册。但是,由于我不是那么优秀的英语读者,所以我没有100%理解。

  3. 感谢你阅读这篇可怕的英语,我希望你能得到一些提示。

    谢谢! :)

2 个答案:

答案 0 :(得分:2)

Facebook允许您访问有关授权您的应用程序的用户和有关其朋友的数据的数据(例如,不是朋友的朋友)。

用户授权您的应用程序后,您可以访问他的基本信息(如ID,姓名,性别)和他公开的其他数据。 对于任何其他内容,您必须要求用户提供不同的权限,一旦获得他们的授权,您就可以访问它。

您还可以向应用用户询问有关其朋友的权限,如果他授予您这些权限,那么您还可以在Facebook上查询他朋友的数据。

查看permissions documentation,了解您可以访问的内容以及需要提出的权限。

您可以使用FQL从Facebook提取数据,但您也可以使用Graph API(或更具体地说:User object)。 例如,要获得登录用户的兴趣,您只需向以下位置发出http请求:

  

https://graph.facebook.com/me/interests

当然,您必须获得user_interest权限..

我建议使用Graph Api Explorer来测试图形api调用(或事件FQL调用),即:User Interests Example

答案 1 :(得分:1)

理论上,你可以,但很难。例如,您可以使用浏览器(例如,python中的mechanize)来模拟浏览活动,并保存您正在访问的网页。然后,您需要使用一些抓取代码来提取所需的信息。

以下机械化(python)代码可以帮助您入门。

import mechanize

br = mechanize.Browser();
br.addheaders = [('User-Agent', 'Firefox')]#Googlebot
br.set_handle_equiv(False)
br.set_handle_redirect(True)
br.set_handle_robots(False)
br._factory.is_html = True

br.open('https://login.facebook.com/login.php')
br.select_form(nr=0)
br['email']='<your_email>'
br['pass']='<your_password>'
r = br.submit();

if r == None:
    print 'Error logging into facebook. '
    sys.exit();

# Save the document to file.
import os
uid = '<your_user_id>' # for example abc.xyz
dir = 'htmls/'
try:
    os.mkdir(dir);
except:
    pass

timeline = open(dir + 'timeline.html', 'w')
htmldoc = ''.join(br.open('https://www.facebook.com/' + uid).read());
timeline.write(htmldoc);
# timeline.write(htmldoc.decode('utf-8', 'replace'))
timeline.close()

HTH, 淑敏