前几天无意中看到了一片文章,《一件有趣的事:我用 Python 爬了爬自己的微信朋友》,这篇文章写的是使用python中的itchat爬取微信中朋友的信息,其中信息包括,昵称、性别、地理位置等,然后对这些信息进行统计并且以图像形式显示。文章对itchat的使用写的很详细,但是代码是贴图,画图使用R中的包画,我对着做了一遍,并且把他没有贴画图的代码做了一遍,画图是使用matplotlib。由于他没有贴代码,所以我把我写的贴出来供以后复制。源码:https://github.com/NSGUF/PythonLeaning

  首先是安装itchat的包,可以使用清华大学的镜像:pip install -i https://pypi.tuna.tsinghua.edu.cn/simple itchat

爬取微信好友男女比例:

import itchatitchat.login()
friends=itchat.get_friends(update=True)[0:]
male=female=other=0
for i in friends[1:]:sex=i['Sex']if sex==1:male+=1elif sex==2:female+=1else:other+=1total=len(friends[1:])
malecol=round(float(male)/total*100,2)
femalecol=round(float(female)/total*100,2)
othercol=round(float(other)/total*100,2)
print('男性朋友:%.2f%%' %(malecol)+'\n'+
'女性朋友:%.2f%%' % (femalecol)+'\n'+
'性别不明的好友:%.2f%%' %(othercol))
print("显示图如下:")

  画图:柱状图和饼状图,图片如下:

 

import numpy as np
import matplotlib.pyplot as plt
import matplotlib as mpl
#解决中文乱码不显示问题
mpl.rcParams['font.sans-serif'] = ['SimHei'] #指定默认字体
mpl.rcParams['axes.unicode_minus'] = False #解决保存图像是负号'-'显示为方块的问题  map = {'Female': (malecol, '#7199cf'),'Male': (femalecol, '#4fc4aa'),'other': (othercol, '#e1a7a2')
}fig = plt.figure(figsize=(5,5))# 整体图的标题
ax = fig.add_subplot(111)#添加一个子图
ax.set_title('Gender of friends')xticks = np.arange(3)+0.15# 生成x轴每个元素的位置
bar_width = 0.5# 定义柱状图每个柱的宽度
names = map.keys()#获得x轴的值
values = [x[0] for x in map.values()]# y轴的值
colors = [x[1] for x in map.values()]# 对应颜色bars = ax.bar(xticks, values, width=bar_width, edgecolor='none')# 画柱状图,横轴是x的位置,纵轴是y,定义柱的宽度,同时设置柱的边缘为透明
ax.set_ylabel('Proprotion')# 设置标题
ax.set_xlabel('Gender')
ax.grid()#打开网格
ax.set_xticks(xticks)# x轴每个标签的具体位置
ax.set_xticklabels(names)# 设置每个标签的名字
ax.set_xlim([bar_width/2-0.5, 3-bar_width/2])# 设置x轴的范围
ax.set_ylim([0, 100])# 设置y轴的范围
for bar, color in zip(bars, colors):bar.set_color(color)# 给每个bar分配指定的颜色height=bar.get_height()#获得高度并且让字居上一点plt.text(bar.get_x()+bar.get_width()/4.,height,'%.2f%%' %float(height))#写值
plt.show()
#画饼状图
fig1 = plt.figure(figsize=(5,5))# 整体图的标题
ax = fig1.add_subplot(111)
ax.set_title('Pie chart')
labels = ['{}\n{} %'.format(name, value) for name, value in zip(names, values)]
ax.pie(values, labels=labels, colors=colors)#并指定标签和对应颜色
plt.show()

爬取其他信息,对省份分类并根据个数对其排序

#用来爬去各个变量
def get_var(var):variable=[]for i in friends:value=i[var]variable.append(value)return variable#调用函数得到各个变量,并把数据存到csv文件中,保存到桌面
NickName=get_var('NickName')
Sex=get_var('Sex')
Province=get_var('Province')
City=get_var('City')
Signature=get_var('Signature')pros=set(Province)#去重
prosarray=[]
for item in pros:prosarray.append((item,Province.count(item)))#获取个数
def by_num(p):return p[1]
prosdsored=sorted(prosarray,key=by_num,reverse=True)#根据个数排序

  画省份图:

#画图
figpro = plt.figure(figsize=(10,5))# 整体图的标题
axpro = figpro.add_subplot(111)#添加一个子图
axpro.set_title('Province')
xticks = np.linspace(0.5,20,20)# 生成x轴每个元素的位置
bar_width = 0.8# 定义柱状图每个柱的宽度
pros=[]
values = []
count=0
for item in prosdsored:pros.append(item[0])values.append(item[1])count=count+1if count>=20:breakcolors = ['#FFEC8B','#FFE4C4','#FFC125','#FFB6C1','#CDCDB4','#CDC8B1','#CDB79E','#CDAD00','#CD96CD','#CD853F','#C1FFC1','#C0FF3E','#BEBEBE','#CD5C5C','#CD3700','#CD2626','#8B8970','#8B6914','#8B5F65','#8B2252']# 对应颜色bars = axpro.bar(xticks, values, width=bar_width, edgecolor='none')
axpro.set_ylabel('人数')# 设置标题
axpro.set_xlabel('省份')
axpro.grid()#打开网格
axpro.set_xticks(xticks)# x轴每个标签的具体位置
axpro.set_xticklabels(pros)# 设置每个标签的名字
axpro.set_xlim(0,20)# 设置x轴的范围
axpro.set_ylim([0, 100])# 设置y轴的范围for bar, color in zip(bars, colors):bar.set_color(color)# 给每个bar分配指定的颜色height=bar.get_height()#获得高度并且让字居上一点plt.text(bar.get_x()+bar.get_width()/4.,height,'%.d' %float(height))#写值plt.show()

  还可以对数据进行保存:可用excel打开

#保存数据
from pandas import DataFrame
data={'NickName':NickName,'Sex':Sex,'Province':Province,'City':City,'Signature':Signature}
frame=DataFrame(data)frame.to_csv('data.csv',index=True)

  

转载于:https://www.cnblogs.com/NSGUF/p/7424649.html

itchat和matplotlib的结合使用爬取微信信息相关推荐

  1. php调用itchat,itchat和matplotlib的结合使用爬取微信信息的实例

    前几天无意中看到了一片文章,< 首先是安装itchat的包,可以使用清华大学的镜像:pip install -i https://pypi.tuna.tsinghua.edu.cn/simple ...

  2. python爬取好友微信地区_python爬取微信信息--显示性别/地域/词云(附代码)

    看到一篇有意思的博客 利用微信开放的接口itchat 可以获取登录的微信好友信息 并且利用图像工具显示分析结果 非常的有意思 记录下实现过程 并提供可执行代码 首先要 import itchat 库 ...

  3. python爬取好友微信地区_python爬取微信信息:显示性别/地域/词云

    利用微信开放的接口itchat可以获取登录的微信好友信息,并且利用图像工具显示分析结果.非常的有意思.那就今天跟一点君来看看需要怎么做呢? 首先要 import itchat 库 这个是微信开源的一个 ...

  4. 爬取微信朋友圈信息-可视化

    自学 pyecharts 练手,画一下基本的柱状图和地图:用 wordcloud 生成词云:用 itchat 爬取微信信息:后面的代码就是基本的朋友圈数据信息整理 导入所需包 import panda ...

  5. 使用 Python 的 itchat 模块爬取微信好友信息

    偶然间听闻 itchat 模块可以用于实现微信好友信息采集.消息收发管理,于是闲来无事玩一玩,只是简单实现了好友性别统计.地域分布统计.个性签名爬取展示以及头像的爬取拼接,还有很多更强大的功能,有兴趣 ...

  6. python爬微信头像_使用python itchat包爬取微信好友头像形成矩形头像集的方法

    初学python,我们必须干点有意思的事!从微信下手吧! 头像集样例如下: 大家可以发朋友圈开启辨认大赛哈哈~ 话不多说,直接上代码,注释我写了比较多,大家应该能看懂 import itchat im ...

  7. python爬取微信好友信息_python itchat 爬取微信好友信息

    「itchat」一个开源的微信个人接口,今天我们就用itchat爬取微信好友信息,无图言虚空 三张图分别是「微信好友头像拼接图」.「性别统计图」.「个性签名统计图」 「微信好友头像拼接图」 「性别统计 ...

  8. python爬取微信好友头像_使用python itchat包爬取微信好友头像形成矩形头像集的方法...

    初学python,我们必须干点有意思的事!从微信下手吧! 头像集样例如下: 大家可以发朋友圈开启辨认大赛哈哈~ 话不多说,直接上代码,注释我写了比较多,大家应该能看懂 import itchat im ...

  9. python爬取微信朋友圈图片_使用python itchat包爬取微信好友头像形成矩形头像集的方法...

    初学python,我们必须干点有意思的事!从微信下手吧! 头像集样例如下: 大家可以发朋友圈开启辨认大赛哈哈~ 话不多说,直接上代码,注释我写了比较多,大家应该能看懂 import itchat im ...

最新文章

  1. C# IP地址与数字之间的互转
  2. Python 一键导出微信阅读记录和笔记,666!
  3. 一个实时收集MySql变更记录的组件CanalSharp.AspNetCore
  4. 【CSDN】-京东云部署java项目及性能测试
  5. C语言,利用条件语句判断是否为三角形并输出面积
  6. 一文解读聚类中的两种流行算法
  7. struts2+freemarker+sitemesh乱码,解决了
  8. jquery设置表单元素只读_jQuery为文本框添加只读属性readOnly
  9. WavePad如何在音乐文件上录制声音
  10. [CSS3] :nth-child的用法
  11. 认识 KEGG PATHWAY 数据库
  12. python语言程序设计课后答案王恺_超星学习通Python程序设计基础(山东联盟)答案汇总...
  13. Git如何统计代码行数
  14. 软件构造过程与配置管理
  15. 【程序员如何买基金 序】基金学习地图
  16. matplotlib 画双轴子图无法显示 x-轴 坐标轴标签
  17. MySQL数据库的存储引擎
  18. Mac下浏览器超实用快捷键
  19. 科学美国人》如何评价转基因?支持与反对之外的第三条道路
  20. spring @Value 的取值顺序 优先级

热门文章

  1. 钉钉办公的消息即时性
  2. 【23年2月23日更新】搭建宝塔面板、青龙面板“京东代挂”
  3. 破解红外发射-美的空调实战篇
  4. 价值2000元的行业织梦dedecms模板108套 免费分享给大家
  5. pandas读取xlsx
  6. window的画图工具(mspaint)也可以帮助我们开发和调试代码的.
  7. comps.xml文件定制
  8. 分析Linux内核中进程的调度(时间片轮转)-《Linux内核分析》Week2作业
  9. DirectX12 3D游戏开发实践(龙书)第四章 Direct3D的初始化
  10. videoeditor android,Video Editor2019