Python 擷取Facebook使用者與其有共同愛好的Friends

來源:互聯網
上載者:User

標籤:資料採礦   facebook   

CODE:

#!/usr/bin/python # -*- coding: utf-8 -*-'''Created on 2014-8-13@author: guaguastd@name: common_friends_finding.py'''# impot loginfrom login import facebook_login# import helper#from helper import pp# import PrettyTablefrom prettytable import PrettyTablefrom collections import Counterfrom operator import itemgetter# access to facebookfacebook_api = facebook_login()# get friends like through single request#friends_like = facebook_api.get_object('me', fields='id,name,friends.fields(id,name,likes)')#pp(friends_like)# get friends like through multi requestfriends = facebook_api.get_connections("me", "friends")['data']likes = { friend['name'] : facebook_api.get_connections(friend['id'], "likes")['data']         for friend in friends[:10]}friends_likes = Counter([like['name']                        for friend in likes                          for like in likes[friend]                              if like.get('name')])# Which of your likes are in common with which friendsmy_likes = [ like['name']             for like in facebook_api.get_connections("me", "likes")['data'] ]# Use the set intersection as represented by the ampersand# operator to find common likescommon_likes = list(set(my_likes) & set(friends_likes))# Which of your friends like things that you like?similar_friends = [ (friend, friend_like['name'])                    for friend, friend_likes in likes.items()                      for friend_like in friend_likes                        if friend_like.get('name') in common_likes ]# Filter out any possible duplicates that could occurranked_friends = Counter([ friend for (friend, like) in list(set(similar_friends)) ])pt = PrettyTable(field_names=["Friend", "Common Likes"])pt.align["Friend"], pt.align["Common Likes"] = 'l', 'r'[ pt.add_row(rf)  for rf in sorted(ranked_friends.items(),                     key=itemgetter(1),                     reverse=True)]print "My similar friends (ranked)"print pt

RESULT:

My similar friends (ranked)+--------------------------+--------------+| Friend                   | Common Likes |+--------------------------+--------------+| Los Mas Lindos del Mundo |            1 || Soofi Cat                |            1 || Jorge Rodriguez          |            1 || Kevin Swaggy             |            1 |+--------------------------+--------------+


相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.