最近发现了一个好玩的包itchat,通过调用微信网页版的接口实现收发消息,获取好友信息等一些功能,各位可以移步itchat项目介绍查看详细信息。

目标:

  • 获取好友列表
  • 统计性别及城市分布
  • 根据好友签名生成词云

获取好友信息

  • 前文说了,itchat其实是调用微信网页版的接口,所以登陆的时候会弹出二维码进行登陆,然后通过itchat.get_friends获取好友信息就好了,相当简单。
# -*- coding: utf-8 -*-
import itchat
import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt
import warnings
import jieba
import re
from scipy.misc import imread
from wordcloud import WordCloud, STOPWORDS, ImageColorGenerator
itchat.login()
#登陆网页版微信,需要手机扫码确认
warnings.filterwarnings("ignore")
  • 获取好友信息的时候需要注意一点,因为好友列表中第一位是自己,所以从第二位开始保存。
friends = itchat.get_friends(update=True)
for counter,content in enumerate(friends[1:]):if counter == 0:df=pd.DataFrame(content)df.columns=content.keys()else:df.loc[counter]=content.values()
print '获取到%d位好友信息'%counter
df.columns
  • 字段信息如下:
Index([u'UserName', u'City', u'DisplayName', u'UniFriend', u'MemberList',u'PYQuanPin', u'RemarkPYInitial', u'Sex', u'AppAccountFlag',u'VerifyFlag', u'Province', u'KeyWord', u'RemarkName', u'PYInitial',u'IsOwner', u'ChatRoomId', u'HideInputBarFlag', u'EncryChatRoomId',u'AttrStatus', u'SnsFlag', u'MemberCount', u'OwnerUin', u'Alias',u'Signature', u'ContactFlag', u'NickName', u'RemarkPYQuanPin',u'HeadImgUrl', u'Uin', u'StarFriend', u'Statues'],dtype='object')

好友城市分布

  • 因为微信中位置信息是两级,省份和城市,对于北京上海这种直辖市,City字段中保存的是区的信息,这个部分做了下处理改为相应的城市名。
df['City'][df['Province']==u'北京']= u'北京'
df['City'][df['Province']==u'上海']= u'上海'
df['City'][df['Province']==u'重庆']= u'重庆'
#微信对于直辖市将city字段填写为区
plt.figure(figsize = (15,12))
data_temp = df[df['City']!='']
#剔除城市未填写的记录
data_temp = data_temp.groupby(['City'])['UserName'].count().reset_index()
data_temp = data_temp.nlargest(15,'UserName')
data_temp.columns = ['City','Count']
sns.barplot(data=data_temp ,y='City',x='Count')
for y,x in enumerate(data_temp['Count']):plt.text(x,y,x,fontsize = 20)
plt.title(u'好友城市分布',fontsize =25)
plt.show()
  • 只取了前15位,效果如下:

性别分布

  • Sex字段中有0,1,2三个值,分别代表性别不明,男,女,相应的replace一下就好。
df['Sex'] = df['Sex'].replace({0:u'性别不明',1:u'男',2:u'女'})
plt.figure(figsize = (15,8))
plt.subplot(1,2,1)
data_temp = df.groupby(['Sex'])['UserName'].count().reset_index()
data_temp = data_temp.sort_values('UserName')
data_temp.columns = ['Sex','Count']
sns.barplot(data=data_temp ,x='Sex',y='Count')
for x,y in enumerate(data_temp['Count']):plt.text(x-0.05,y,y,fontsize = 20)
plt.subplot(1,2,2)
sex_list = [u'男',u'女',u'性别不明']
countlist = [292,227,25]
explode = (0.05,0,0)
plt.pie(countlist,labels = sex_list,explode =explode,startangle = 90,autopct = '%3.1f%%')
plt.axis('equal')
plt.show()
  • 效果如下:

根据好友签名绘制词云

  • Signature中保存的是好友签名,开始试了一次,发现签名中emoji表情占了好大的比例,后面用正则表达式处理了下,只保留了汉字部分。
back_color = imread('tencent.jpg')  # 解析该图片
wc = WordCloud(background_color='white',  # 背景颜色max_words=1000,  # 最大词数mask=back_color,  # 以该参数值作图绘制词云,这个参数不为空时,width和height会被忽略max_font_size=100,  # 显示字体的最大值font_path="/Users/tangwenpan/Downloads/simhei.ttf",  # 解决显示口字型乱码问题random_state=42,  # 为每个词返回一个PIL颜色)text=''
xx= u"[\u4e00-\u9fa5]" #保留汉字
for x in df['Signature']:pattern = re.compile(xx)  text_temp =  pattern.findall(x) for xxx in text_temp:text = text +xxxdef word_cloud(texts):words_list = []word_generator = jieba.cut(texts, cut_all=False)  # 返回的是一个迭代器for word in word_generator:if len(word) > 1:  #去掉单字words_list.append(word)return ' '.join(words_list)  text = word_cloud(text)wc.generate(text)
# 基于彩色图像生成相应彩色
image_colors = ImageColorGenerator(back_color)
plt.figure(figsize = (15,15))
plt.axis('off')
# 绘制词云
plt.imshow(wc.recolor(color_func=image_colors))
plt.axis('off')
# 保存图片
wc.to_file('comment.png')
print 'comment.png has bee saved!'
  • 使用背景图片

  • 效果如下:


peace~

Python使用itchat获取微信好友相关推荐

  1. python的itchat获取微信好友数量和性别统计

    python获取微信好友数量和性别统计 先安装itchat库 pip install itchat 源代码如下: 代码执行时会跳出二维码界面,通过手机微信扫码进行登录 import itchat# 登 ...

  2. python使用itchat获取微信好友列表

    ''' 微信字段:Nickname昵称,remarkName,备注,Sex,性别,Signature个性签名,'Province': '云南', 'City': '昆明' '''import itch ...

  3. itchat和php,Python使用itchat 功能分析微信好友性别和位置

    这样就将你所有微信好友的信息都返回了,我们并不需要这么多的信息,我们选取一些信息存储到 csv 文件中 注意:返回的信息是一个 list,其中第一个是我自己的信息,所以要从第二项开始 存储的文件 2: ...

  4. python分别统计男女人数_Python实践-itchat获取微信好友总人数以及男女比例

    1 itchat是微信的个人开放接口:本文利用Python+itchat实现简单的个人好友数量以及男女比例的统计 itchat 的安装:pip install itchat(需要权限的可以使用sudo ...

  5. python获取pc微信好友列表_python使用itchat获取微信好友列表

    ''' 微信字段:Nickname昵称,remarkName,备注,Sex,性别,Signature个性签名,'Province': '云南', 'City': '昆明' ''' import itc ...

  6. 基于itchat获取微信好友头像

    itchat貌似又解封了.. 关于微信好友这块就到此结束吧,也没啥新意了-- 上代码: #!/usr/bin/env python # -*- coding:utf-8 -*- import itch ...

  7. python利用itchat监控微信好友的头像是否更换(纯属娱乐)

    利用itchat模块可以模拟登录微信网页版,所以可以获取一些微信的基本信息,包括好友名字,数量,头像,群聊等等,也可模拟发送信息,所以写了一个监控好友头像是否改变,如果好友头像改变了,立马赞美ta的头 ...

  8. python加itchat 获取微信群用户信息

    失散了10多年的组织(高中同学群)建立的群,同学们"自觉"地实名了,下一步就要寻找还没有找到组织的同志,为此,爬取了群内用户清单,导出来列一下. #!/usr/bin/python ...

  9. python获取微信好友权限_Python-itchat获取微信好友信息

    参考自:http://www.jianshu.com/p/684cbdf15874 思路就是通过itchat登录获取微信好友信息,然后通过pillow画图 import itchat import m ...

最新文章

  1. AI时代的高科技读心术:算法解码脑中图像
  2. 使用navicat工具创建MySQL存储过程
  3. BATZ,一份《Android架构开发手册》就够,已offer
  4. Gson转换导致int转换成double的问题解决
  5. linux内存布局和地址空间布局随机化(ASLR)下的可分配地址空间
  6. 2018美赛E题翻译
  7. phpstudy使用数据库教程
  8. 「叫好」但是「不叫座」?no,「叫好」所以「不叫座」
  9. 淘宝网触屏版 - 学习笔记(1 - 关于meta)
  10. 高效备考腾讯云开发工程师TCA:题目解析和实用技巧大揭秘!
  11. csgo开箱网站有哪些?NEW
  12. [项目]——文件搜索工具Java-Everything
  13. linux配置https不安全链接,配置HTTPS证书后,浏览器出现不安全提示的解决方法
  14. 组织项目管理(PMP知识整理)
  15. Mac电池显示需要维修
  16. Kubernetes ~ k8s 从入门到入坑。
  17. RISC-V向量指令扩展(二)
  18. for循环加switch语句中的break与continue的用法
  19. 2021-2027全球与中国私人游艇市场现状及未来发展趋势
  20. 外夹式超声波流量计工作原理及优缺点

热门文章

  1. python求多条最短路径_Python实现最短路径算法(Dijkstra's algorithm)
  2. python print(len(pi_string))_Python如何从文件中读取数据
  3. 使用this调用已有的有参构造函数_JavaScript 中的 this 的几种使用场景
  4. go语言解析html
  5. Asp.net中web.config配置文件详解
  6. ssl问题解决的过程
  7. 解密 Go interface 的类型转换原理
  8. 分布式事务模型--Saga
  9. 关于Mybatis的几个问题
  10. 如何 Scale Up/Down 应用?- 每天5分钟玩转 Docker 容器技术(126)