Loading [MathJax]/jax/input/TeX/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Python使用itchat获取微信好友

Python使用itchat获取微信好友

作者头像
Awesome_Tang
发布于 2018-09-11 02:43:18
发布于 2018-09-11 02:43:18
4.1K00
代码可运行
举报
文章被收录于专栏:FSocietyFSociety
运行总次数:0
代码可运行

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

目标:

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

获取好友信息

  • 前文说了,itchat其实是调用微信网页版的接口,所以登陆的时候会弹出二维码进行登陆,然后通过itchat.get_friends获取好友信息就好了,相当简单。
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# -*- 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")
  • 获取好友信息的时候需要注意一点,因为好友列表中第一位是自己,所以从第二位开始保存。
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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
  • 字段信息如下:
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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字段中保存的是区的信息,这个部分做了下处理改为相应的城市名。
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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一下就好。
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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表情占了好大的比例,后面用正则表达式处理了下,只保留了汉字部分。
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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 +xxx

def 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~

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2018.07.01 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
itchat统计微信好友信息
好像不够直观,有兴趣的朋友可以加上可视化的展示,我这里用基于python的Echarts 先安装了
周小董
2019/03/25
2.1K0
itchat统计微信好友信息
微信好友大揭秘
每天自己手机应用使用时间排行榜,微信都毫不意外地占据榜首,每天睁开眼的第一件事就是拿起手机打开微信,查收消息,关注朋友圈好友的动态。但是除了这些微信还有哪些好玩的东西呢?今天就用python对自己所有微信好友做一次数据分析,看看自己的微信好友存在哪些有趣的东西。
PM小王
2019/07/01
2.2K0
微信好友大揭秘
Python中的itchat模块的使用
@CSDN:https://blog.csdn.net/weixin_44510615/article/details/105340263
润森
2020/04/08
9300
Python中的itchat模块的使用
用Python更加了解微信好友
运行平台: Windows Python版本: Python3.6 IDE: Sublime Text
王强
2018/08/09
1.1K0
用Python更加了解微信好友
关于微信和Python的点点滴滴
微信自上线以来,一直没有自动回复的功能,想必是有他们的理念。但是有些人群,确实对此功能有一定需求,我举两个栗子:
IT派
2018/08/10
5300
关于微信和Python的点点滴滴
用Python爬了我的微信好友,他们是这样的...
随着微信的普及,越来越多的人开始使用微信。微信渐渐从一款单纯的社交软件转变成了一个生活方式,人们的日常沟通需要微信,工作交流也需要微信。微信里的每一个好友,都代表着人们在社会里扮演的不同角色。
程序员小猿
2021/01/20
7930
用Python爬了我的微信好友,他们是这样的...
数据分析之微信好友
周六了,各位周末快乐,今日我们来一文数据分析,从0说起,一起来看pyecharts的作用以及其他相关库的使用!
公众号guangcity
2019/09/20
1.4K0
数据分析之微信好友
用 Python 制作微信好友个性签名词云图
0.前言 上次查看了微信好友的位置信息,想了想,还是不过瘾,于是就琢磨起了把微信好友的个性签名拿到,然后分词,接着分析词频,最后弄出词云图来。 1.环境说明 Win10 系统下 Python3,编译器是 Pycharm,需要安装 itchat、matplotlib、pandas、jieba、wordcloud、numpy、pillow 这几个包 介绍 Pycharm 安装第三方包的方法。 由于某些包不能直接用 Pycharm 安装,所以这里说一下安装的方法。 安装w
伪君子
2018/04/04
1.6K0
用 Python 制作微信好友个性签名词云图
利用python看看你的微信好友都是什么样人
通过安装第三方工具包itcaht,我们可以通过二维码登陆微信,然后获得我们的好友信息,如下图所示
行哥玩Python
2020/07/14
8670
利用python看看你的微信好友都是什么样人
手把手教你用itchat统计好友信息,了解一下?
初学Python的时候,就写过一篇利用Python的第三方库进行好友头像拼接,itchat itchat库初探--微信好友全头像的拼接,最近又研究了下itchat和matplotlib,目前实现了对微信好友头像、性别、区域、个性签名的采集及展示。
Python攻城狮
2019/03/22
6010
手把手教你用itchat统计好友信息,了解一下?
Python—微信好友云图怎么玩
代码来源:https://www.cnblogs.com/taixiang/p/9124822.html
Ed_Frey
2019/07/04
1.8K0
Python—微信好友云图怎么玩
使用 python 进行微信好友分析
【特别提醒】:pyecharts 库用的是0.5.x版本,而在 pip 中安装的为1.x.x版本,因此需要自行到【官网】中下载。
py3study
2020/01/15
1.8K0
python爬取微信信息--显示性别/地
看到一篇有意思的博客 利用微信开放的接口itchat 可以获取登录的微信好友信息 并且利用图像工具显示分析结果 非常的有意思 记录下实现过程 并提供可执行代码
py3study
2020/01/17
7710
玩转itchat,实现好友信息可视化、聊天机器人及性别模型构建
前些日子,女朋友拿我手机玩,说我微信好友女生多,当时我就不服了(跪着认错了),然后两人一个个统计性别,我微信好友不算多,但也有300来个,人工统计实在费事,之后事情也就不了了之了(打了我一顿)。 昨天突然想到itchat库可以获取微信好友信息,所以又拿出来玩了一下,为什么说又了?之前用过itchat制作好友全头像,链接(https://www.jianshu.com/p/684cbdf15874)。所以今天继续使用itchat来玩转好友信息。
罗罗攀
2018/08/02
6920
玩转itchat,实现好友信息可视化、聊天机器人及性别模型构建
《爱情公寓》电影版,十年一瞬间(下)
首先附上图表神器pyecharts的技术文档的网址:http://pyecharts.org/#/zh-cn/charts
小F
2020/10/09
4200
《爱情公寓》电影版,十年一瞬间(下)
我用 Python 爬取微信好友,最后发现一个大秘密
你身处的环境是什么样,你就会成为什么样的人。现在人们日常生活基本上离不开微信,但微信不单单是一个即时通讯软件,微信更像是虚拟的现实世界。你所处的朋友圈是怎么样,慢慢你的思想也会变的怎么样。最近在学习 itchat,然后就写了一个爬虫,爬取了我所有的微信好友的数据。并对其中的一些数据进行分析,发现了一些很有趣的事。
IT派
2018/07/30
1.1K1
我用 Python 爬取微信好友,最后发现一个大秘密
Python实现「碟中谍」5W条评论可视化
本篇文章会针对用户在猫眼上对于「碟中谍6」的评论进行一个可视化分析,我们总共采集了44872条用户评论,文章内容包括:
Awesome_Tang
2018/09/11
7410
Python实现「碟中谍」5W条评论可视化
用python快速分析你的微信好友
itchat基于python开发,封装了大量调取微信功能的接口,使得开发人员可以快速基于这个框架来完成一些微信操作,在这之前我们要做的就是扫码登录,实际上这相当于登录网页版的微信(新注册的账号似乎不支持)。更多介绍在官网和Github上都有详细的文档。   下面介绍基于itchat完成微信数据(好友、群聊等)的分析和展示。
happyJared
2018/09/20
7280
用python快速分析你的微信好友
爬了自己的微信,才知道好友都是这样的!
资源君在python的玩耍之路上发现python是越来越有趣,竟然还能去爬取微信上的信息,今天资源君带大家用python来爬一爬自己的微信好友,爬过之后才知道自己的好友是这样的!
Python进击者
2019/09/17
4180
爬了自己的微信,才知道好友都是这样的!
基于Python实现的微信好友数据分析
本文转自微信公号5厘米的理想 作者 | 飞鸿踏雪 最近微信迎来了一次重要的更新,允许用户对”发现”页面进行定制。不知道从什么时候开始,微信朋友圈变得越来越复杂,当越来越多的人选择”仅展示最近三天的朋友圈”,大概连微信官方都是一脸的无可奈何。逐步泛化的好友关系,让微信从熟人社交逐渐过渡到陌生人社交,而朋友圈里亦真亦幻的状态更新,仿佛在努力证明每一个个体的”有趣”。 有人选择在朋友圈里记录生活的点滴,有人选择在朋友圈里展示观点的异同,可归根到底,人们无时无刻不在窥探着别人的生活,唯独怕别人过多地了解自己的生
AI科技大本营
2018/04/26
1.1K0
基于Python实现的微信好友数据分析
相关推荐
itchat统计微信好友信息
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验