Python数据挖掘之用图挖掘同样喜欢梅西的的人

前言:
本次同样在twitter上进行数据挖掘,主题是构建图,计算相似度,找到同样喜欢梅西的人,之后可以进行好友推荐,或者用户建群等。
编辑工具:anaconda 的jupyter notebook,所以会直接在代码后面跟上输出。
数据集:如果不想麻烦的弄数据的话,可以跳过下面获取数据步骤,直接使用文末数据,导入即可。

获取Twitter好友数据

写入授权令牌

import twitter
consumer_key = "填入自己的授权令牌"
consumer_secret = "填入自己的授权令牌"
access_token = "填入自己的授权令牌"
access_token_secret = "填入自己的授权令牌"
authorization = twitter.OAuth(access_token,access_token_secret,consumer_key,consumer_secret)
t = twitter.Twitter(auth=authorization,retry=True)

获取用户数据

import os
data_folder = "E:\DataMining\Project\dataming_with_python\chapter_7用图挖掘到感兴趣的人"
output_filename = os.path.join(data_folder,"python_tweets.json")
import json 
original_users = []   #用户信息
tweets = []           #消息文本
user_ids = {}       #关联用户编号和昵称
search_result = t.search.tweets(q="Lionel Messi",count=60)['statuses']
for tweet in search_result:
    if 'text' in tweet:
        original_users.append(tweet['user']['screen_name'])
        user_ids[tweet['user']['screen_name']] = tweet['user']['id']
        tweets.append(tweet['text'])
len(tweets)
60

获取Twitter好友信息,这里假设搜索Lionel Messi的都是喜欢的

import time
#创建函数
def get_friends(t,user_id):
    friends =[]
    cursor = -1    #游标,管理翻页
    while cursor != 0:
        try:
            results = t.friends.ids(user_id=user_id,cursor=cursor,count=5000)
            friends.extend([friend for friend in results['ids']])
            cursor = results['next_cursor']
            if len(friends) > 10000:           #用户好友很多时限制
                break
        #处理异常
        except TypeError as e:
            if results is None:
                print('API次数限制,等待五分钟')
                sys.stdout.flush()
                time.sleep(5*60)   #等五分钟
            else:
                raise e
        except twitter.TwitterHTTPError as e:
            break
        finally
  • 5
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值