基于Python的微信朋友圈数据可视化分析之个性签名

需求

利用 Python 爬取微信朋友圈的个性签名,通过生成词云的方式对朋友圈的关键词进行可视化的分析。

思路

经过调研发现,通过 itchat 这个第三方的包,再结合人工扫码授权的方式可以直接调用微信的接口,从而获取到朋友圈的所有信息。

依赖包

直接在 Python 环境下运行源代码,提示缺啥就补啥呗

安装包的命令

pip install 包名

itchat 中微信好友信息常见字段分析

通过 itchat 获取到的微信好友信息的格式是 dict 字典格式,其中的含义在官方文档中也没有详细地说明,此处记录一些常见的含义如下:

"Uin": 0,
"UserName": 用户名称,一个"@"为好友,两个"@"为群组
"NickName": 昵称
"HeadImgUrl":头像图片链接地址
"ContactFlag": 1-好友,2-群组,3-公众号
"MemberCount": 成员数量,只有在群组信息中才有效,
"MemberList": 成员列表,
"RemarkName": 备注名称
"HideInputBarFlag": 0,
"Sex": 性别,0-未设置(公众号、保密),1-男,2-女
"Signature": 公众号的功能介绍 or 好友的个性签名
"VerifyFlag": 0,
"OwnerUin": 0,
"PYInitial": 用户名拼音缩写
"PYQuanPin": 用户名拼音全拼
"RemarkPYInitial":备注拼音缩写
"RemarkPYQuanPin": 备注拼音全拼
"StarFriend": 是否为星标朋友  0-否  1-是
"AppAccountFlag": 0,
"Statues": 0,
"AttrStatus": 119911,
"Province": 省
"City": 市
"Alias": 
"SnsFlag": 
"UniFriend": 0,
"DisplayName": "",
"ChatRoomId": 0,
"KeyWord": 
"EncryChatRoomId": ""

源代码

注意:运行的时候,需要准备好手机微信,扫码确定登录!

# coding:utf-8
import itchat
import re
import jieba  # jieba分词
# wordcloud词云
import matplotlib.pyplot as plt
from wordcloud import WordCloud, ImageColorGenerator
import os
import numpy as np
import PIL.Image as Image
import pandas as pd

itchat.login()
friends = itchat.get_friends(update=True)[0:]
# 将朋友列表的所有信息保存至本地文件中
# pd.DataFrame(friends).to_csv(u"wechat_friends_info.csv")
tList = []
for i in friends:
    signature = i["Signature"].replace(" ", "").replace("span", "").replace("class", "").replace("emoji", "")
    rep = re.compile("1f\d.+")
    signature = rep.sub("", signature)
    tList.append(signature)
# 拼接字符串
text = "".join(tList)

wordlist_jieba = jieba.cut(text, cut_all=True)
wl_space_split = " ".join(wordlist_jieba)

d= os.path.dirname(os.path.abspath( __file__ ))
alice_coloring = np.array(Image.open(os.path.join(d, "wechat.png")))  # 生成词云的基础图片
my_wordcloud = WordCloud(background_color="white", max_words=2000,mask=alice_coloring,max_font_size=400, random_state=420,font_path='C:\Windows\Fonts\msyhl.ttc').generate(wl_space_split)
image_colors = ImageColorGenerator(alice_coloring)
plt.imshow(my_wordcloud.recolor(color_func=image_colors))
plt.imshow(my_wordcloud)
plt.axis("off")
plt.show()

“努力”的朋友圈

通过分析本人朋友圈的个性签名所得到的词云图最终如下图所示,不难看出,“努力”是我朋友圈的核心词,我为自己能拥有这么多优秀的朋友而感到开心,物以类聚,人以群分,我一定好好努力,向你们学习。

“努力”的朋友圈

关于词云

可以参考我之前的一篇文章 《用QQ聊天记录生成一个词云

参考文献

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

清风醉雨

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值