前言
大家好,这里是「brucepk」爬虫 系列教程。此文首发于「brucepk」公众号,欢迎大家关注。此系列教程以实例项目为材料进行分析,从项目中学习 python 爬虫,跟着我一起学习,每天进步一点点。
学编程是一件枯燥的事情,比较好的方法是在实际项目中学习成长。今天带来的是 30 行代码画出你的微信朋友的性别统计图。
最近发现一个有意思的库:itchat,itchat 是一个开源的微信个人号接口。今天就用 itchat 来统计自己微信好友性别的比例并用柱形图展示出来。
项目环境:python 3
环境安装
通过下面命令安装 itchat:
pip install itchat
通过下面命令安装 matplotlib:
pip install matplotlib
Matplotlib 是一个 Python 的 2D 绘图库,它以各种硬拷贝格式和跨平台的交互式环境生成出版质量级别的图形。
先给大家展示下成果图:
程序结构:
-
登录微信;
-
统计出微信里好友男女人数;
-
根据第 2 步统计的人数画出柱形图。
登录微信
itchat.auto_login(hotReload=True)
第一次运行程序需要微信扫码登录,这里直接调用 auto_login 方法传入值为 True 的hotReload。该方法会生成一个静态文件 itchat.pkl,用于存储登陆的状态。这样即使程序关闭,一定时间内重新开启也可以不用重新扫码。
统计人数
用 get_friends 获取所有好友信息。
循环统计时从 1 开始,因为 friends[0] 是自己的信息。
friends=itchat.get_friends(update=True)[0:] #获取所有好友信息 male = female = other =0 for i in friends[1:]: sex=i["Sex"] if sex==1: male+=1 elif sex==2: female+=1 else: other+=1 total=len(friends[1:])
再打印出统计比例:
print("男性好友: %.2f%%" % (float(male)/total*100) + "\n" + "女性好友: %.2f%%" % (float(female) / total * 100) + "\n" + "不明性别好友: %.2f%%" % (float(other) / total * 100))
画图
设置 x 轴、 y 轴 和标题的名称,定义柱形图的颜色,最后通过 plt.show显示出来。
plt.xlabel("sex") plt.ylabel("count") plt.title("Gender statistics") a=plt.subplot(1,1,1) plt.bar(10, male, facecolor=‘red‘, width=3, label=‘male‘) plt.bar(15, female, facecolor=‘yellow‘, width=3, label=‘female‘) plt.bar(20, other, facecolor=‘blue‘, width=3, label=‘other‘) plt.legend() plt.show()
这样微信好友的统计图就完成了,当然,这只是 itchat 冰山一角的功能,还有很多有意思的功能等着我们去挖掘。
完整代码我以上传到 GitHub 上,需要的同学可以自己下载。
https://github.com/Brucepk/wechat_friend
也可以在公众号后台回复「微信好友统计」获取。