微信好友 一览无余 【itchat】一个微信的开源API ,微信是一种常用的社交网络应用程序。
通过python中的聊天访问个人微信账户,然后通过微信机器人进行处理个人所有基本信息。
安装itchat模块
简单使用 1 2 3 import itchatitchat.auto_login() itchat.send('Hello, filehelper' , toUserName='filehelper' )
详情见itchat官方网站
主要用到的方法有:
itchat.login()
微信扫码登录
itchat.get_friends()
返回完整的列表好友,每个好友为一个字典,其中第一项为自己的账号基本信息,带入参数update=True
,将更新好友列表并返回,具体使用itchat.get_friends(update=True)
技巧:使用itchat.login()
进行登录微信会有一个问题,就是每运行一次就会生成一个二维码,叮··· 扫描登录,是不是过于麻烦了? 直接采用itchat.auto_login()
,在一定时间内,可以不用扫码登录,只需要在手机移动端确定登录就行了,毕竟是在模拟网页登录
开始操作 1 2 3 4 5 6 7 8 import itchatimport csvimport pandas as pditchat.auto_login(hotReload=True ) friends = itchat.get_friends(update=True )[0 :]
这时,好友信息已经在存储在friends 里面了。
定义函数抓取个字段信息get_var(var)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 def get_var (var) : variable = [] for i in friends: value = i[var] variable.append(value) return variable NickName = get_var('NickName' ) Sex = get_var('Sex' ) Province = get_var('Province' ) City = get_var('City' ) Signature = get_var('Signature' ) Username = get_var('UserName' ) ContactFlag = get_var('ContactFlag' ) SnsFlag = get_var('SnsFlag' )
定义函数parse_friends() ,将得到的好友数据存储在txt文本中
1 2 3 4 5 6 7 8 9 10 11 12 13 14 def parse_friends () : result = {'NickName' : NickName, 'Sex' : Sex, 'Province' : Province, 'City' : City, 'UserName' : Username, 'ContactFlag' : ContactFlag, 'SnsFlag' : SnsFlag, 'Signature' : Signature, } for user in friends: with open('myfriends.txt' , 'a' , encoding='utf8' ) as fh: fh.write('-------------------------\n' ) for r in result: with open('myfriends.txt' , 'a' , encoding='utf8' ) as fh: fh.write(str(r) + ":" + str(user.get(r))+"\n" ) print("分析完毕!" )
设置最后打印标识,提醒已完成信息存储;
同时当前文件夹中出现一个文件`myfriends.txt`
信息文件
定义函数male_female() 统计男女以及其他人数和比例
统计
然后利用pandas 模块将文件信息保存在csv文件 中
1 2 3 4 5 6 7 8 data = {'NickName' : NickName, 'Sex' : Sex, 'Province' : Province, 'City' : City, 'UserName' : Username, 'ContactFlag' : ContactFlag, 'SnsFlag' :SnsFlag, 'Signature' :Signature, } frame = DataFrame(data) frame.to_csv('data2.csv' , index=True , encoding='utf-8' ) with open('data2.csv' , 'r' , encoding='utf-8' ) as myfile: reader = csv.reader(myfile) for row in reader: print(row)
便于后续采用pandas中的 value_counts 进行计数可视化处理
简单可视化操作
采用pyecharts中的Pie绘制饼图
1 2 from pyecharts.charts import Pie
1 2 3 4 5 6 configure(output_image=True ) pie = Pie("性别比例" , background_color='white' , title_text_size=25 ) attr = ['male' , 'female' , 'other' ] v1 = [57.14 , 27.04 , 15.82 ] pie.add('' , attr, v1, is_label_show=True ) pie.render()
再使用pyecharts时,可能会出现一些错误,比如不存在Pie或者无法导入Pie等
看了一些博客之后,我采用的方法是降级,即降低库的版本,可能是与python版本有冲突
效果
比例.png
或许这就是你Single的原因吧 --苦笑--