微信上有很多个群,不少群都是做了免打扰设置,但有的时候又想知道群里在讨论什么热点问题。利用词云图分析是一个了解某个微信群热点的方法。
    本文通过itchat 采集微信群聊记录,用jieba做分词,用wordcloud生成词云图,主界面用wxPython完成。分析结果如下图:

对隐私内容马赛克处理了。

一、准备工作

首选,先要确定你的微信能登录微信网页版。只有能成功登录微信网页版,才能用 itchat 去分析群信息。
如果不能登录,只能借用其他的微信号进行研究了。

接下来配置好开发环境,安装相关库。

Python 3.7.3itchat            1.3.10
jieba             0.42.1
Pypubsub          4.0.3
wordcloud         1.6.0
wxPython          4.0.6

二、过程:

1、创建数据表

import SqliteLib as sldb = sl.WorkDb('db.db')
# 建立数据表 微信群表
sql_str = '''
create table wxq(id integer primary key autoincrement, wxq_name string unique, wxq_uid  string, wxq_time string)
'''
db.run_sql(sql_str)# 建立数据表 微信群聊信息表
sql_str = '''
create table wxq_msg(id integer primary key autoincrement, wxq_id string, wxq_name string, wxq_member string, wxq_time string, wxq_msg  string)
'''
db.run_sql(sql_str)

2、主页面

主界面就一个文本框。

3、数据显示

用以前开发过的数据显示模块显示。

    def OnWxgM(self,event):fld = 'wxq_name,wxq_time'fld_head = '群名|最后活跃时间'table_name = 'wxq'wb_tbl = {'name': table_name, 'fld': fld, 'key': " ", 'order': 'order by id desc'}wb_tbl['value'] = ()wb_tbl['fld_head'] = fld_headwb_tbl['srch_fld'] = 'wxq_name'wb_tbl['Title'] = '微信群列表'wb_tbl['info'] = '点击鼠标右键查看群画像'wb_tbl['col_len'] = [300, 200]wb_tbl['scr_size'] = [800, 400]wb_tbl['work_id'] = 'set_wx_group'frame = DSFrame(wb_tbl)frame.Show()

4、微信信息处理

    def Listen_Wx(self):# 监控微信群信息@itchat.msg_register(TEXT, isGroupChat=True)  # 这里的TEXT表示如果有人发送文本消息,那么就会调用下面的方法def simple_reply(msg):message = ''msg_group = ''msg_member = '本机登录用户'try:try:group = itchat.get_chatrooms(update=True)wx_group = {}for g in group:m_dict = {}for menb in g['MemberList']:m_dict[menb['UserName']] = menb['NickName']wx_group[g['UserName']] = {'name': g['NickName'], 'member': m_dict}msg_group = wx_group[msg['FromUserName']]['name']if msg['ActualNickName'] == wx_group[msg['FromUserName']]['member'][msg['ActualUserName']]:msg_member = msg['ActualNickName']else:msg_member = "{}[{}]".format(msg['ActualNickName'],wx_group[msg['FromUserName']]['member'][msg['ActualUserName']])except Exception as e:self.debug_log(repr(e))try:if msg_group == '':msg_group = msg['User']['NickName']except Exception as e:self.debug_log(repr(e))t_now = time.strftime('%Y-%m-%d %H:%M:%S', (time.localtime(msg['CreateTime'])))message = msg['Content']# pub.sendMessage("update", mstatus=message)m_show = "{}\n{} {} \n{}".format(t_now, msg_group, msg_member, message )# 更新群活跃时间self.ldb.save_wxg_info((msg_group, t_now))#'保存微信信息'wx_msg = (msg_group, msg_member, t_now, message)wx_msg_id = self.ldb.insert_wx_msg(wx_msg)pub.sendMessage("update", mstatus=m_show)except Exception as e:f_e = open('error.log', 'a', encoding='utf-8')t_now = time.strftime('%Y-%m-%d %H:%M:%S', (time.localtime(time.time())))f_e.write("\n{}\n{}".format(t_now, repr(e)))f_e.close()itchat.auto_login(hotReload=True)auth_flag = 'ok'if auth_flag == 'ok':t_now = time.strftime('%Y-%m-%d %H:%M:%S', (time.localtime(time.time())))itchat.send('登录{}'.format(t_now), toUserName='filehelper')pub.sendMessage("update", mstatus='loginok')itchat.run()else:itchat.logout()

5、词云显示

词云部分参考了 HateMath归来 的博文 https://www.cnblogs.com/hatemath/p/10238145.html

# 去掉符号resultword=re.sub("[\[\`\~\!\@\#\$\^\&\*\(\)\=\|\{\}\'\:\;\'\,\[\]\.\<\>\/\?\~\。\@\#\\\&\*\%]", "",word)wordlist_after_jieba = jieba.cut(resultword)wl_space_split = " ".join(wordlist_after_jieba)# 设置停用词sw = set(STOPWORDS)sw.add("通知")# 建立词云图my_wordcloud = WordCloud(scale=4,font_path=font,stopwords=sw,background_color='white',max_words = 100,max_font_size = 60,random_state=20).generate(wl_space_split)#显示生成的词云fig = plt.figure(figsize=(8, 5))fig.canvas.set_window_title(wxg)plt.imshow(my_wordcloud)plt.axis("off")plt.show()

三、使用

启动后,登录微信,需要用手机端微信扫描弹出的二维码,登录后,自动记录群聊消息。可以通过菜单查看,搜索群聊记录。

在群列表中,点击鼠标右键,可以生成词云。

四、后记

目前的代码,是分析群所有聊天记录。后续开发可以考虑增加以下功能:

1、增加剔除关键字维护, 比如群主的名字 :)。

2、增加分析时间段。

3、清除数据

4、增加重要消息关键字维护,有匹配上的关键字信息,转发到手机微信的 文件传输助手。

有其他的需求或者建议欢迎和我联络。

微信群画像,利用词云图分析微信群热点相关推荐

  1. 【python】用python实现wordcloud大数据词云图分析

    [python]用python实现wordcloud大数据词云图分析 一.应用场景 二.工具包安装及代码 三.中文不能正常显示问题 四.关键词重复问题 五.最终结论 一.应用场景 大数据词云(word ...

  2. python爬取携程旅游评价信息词云图分析

    python爬取携程旅游评价信息词云图分析 前言 前面咱们已经分析过如何爬取携程旅游的相关信息,如果没有看过的,可以先跳转看一下前面的那篇博客:python 爬虫 一键爬取携程旅游团数据 这一篇呢,咱 ...

  3. 利用jieba库和wordcloud库,进行中文词频统计并利用词云图进行数据可视化

    目录 利用jieba库和wordcloud库,进行中文词频统计并利用词云图进行数据可视化 安装jieba库 安装wordcloud 打开pycharm 编写代码 利用jieba库和wordcloud库 ...

  4. python爬携程上出境游数据_python爬取携程旅游评价信息词云图分析

    python爬取携程旅游评价信息词云图分析 前言 前面咱们已经分析过如何爬取携程旅游的相关信息,如果没有看过的,可以先跳转看一下前面的那篇博客:python 爬虫 一键爬取携程旅游团数据 这一篇呢,咱 ...

  5. 做一个关于我和她微信聊天记录的爱心词云图

    前言:    因为最近接触到了词云图,所以就想做一个关于和女朋友聊天的词云图,但是现在很少使用QQ了,所以就不得不使用微信导出聊天记录.于是我坐在电脑面前查阅资料查了一天,但是在走到快导出微信聊天记录 ...

  6. Python玩转微信 个性签名生成词云图

    本博客代码参照http://www.cnblogs.com/jiaoyu121/p/6944398.html. 运行如下代码之前,将下图的wechat.jpg放入F盘下,需安装itchat.jieba ...

  7. 利用python深度分析微信朋友圈好友

    最近看了wxpy这个包,感觉还不错,分析一下微信的好友. 分析的目的: 1.看看好友的性别占比.地域分布 2.分析好友的个性签名 3.对好友的签名进行情感分析 环境:python 3.6 需要的包wx ...

  8. python生成微信个性签名的词云图

    需要用到的库:itchat,jieba,numpy,wordcloud import itchat import re import jieba import matplotlib.pyplot as ...

  9. PC微信机器人接口api之实战分析微信同意好友call

    今天分析一下同意好友请求的call,这个需要两个参数,v1和v2,这两个参数哪里来呢,就是在别人加你的时候,收到的消息里面含有的参数,我们可以用一个小号加下自己的微信,然后这边接收到个xml消息,里面 ...

最新文章

  1. ES doc_values介绍2——本质是field value的列存储,做聚合分析用,ES默认开启,会占用存储空间...
  2. Android Studio 一些方便使用的设置
  3. python to_excel保存成xls_pd.ExcelWriter(to_excel)保存结果到已存在的excel文件中
  4. 递归-递归实现数字累加
  5. 如何使用Java 8函数式编程生成字母序列
  6. Spring Cloud微服务之父工程的创建(一)
  7. Python实战从入门到精通第十一讲——可接受任意数量参数的函数
  8. 程序员你知道被迫参与一个两亿的项目,想跑还逃不掉吗?
  9. 目标检测的图像特征提取之LBP特征
  10. 使用Chrome谷歌浏览器打开Axure原型图
  11. 极速版RPS选股,一秒出结果的方案是如何实现的!股票量化分析工具QTYX-V2.5.3...
  12. 伍斯特理工学院计算机科学硕士,美国伍斯特理工学院数据科学硕士录取
  13. 浅谈数字音频处理的新技术
  14. 标注的尺寸避让lisp_AutoCAD中尺寸公差的自动标注 一短小AutoLISP程序轻松实现.doc...
  15. MAC版“迅雷 意外退出”
  16. 均值滤波器类型_滤波器的种类归纳
  17. PCA主成分分析 提取主成分,过滤噪音
  18. ufs 固态硬盘_东芝首发UFS 3.0闪存:性能媲美高端PC 固态硬盘
  19. R网格MIC与频繁项集
  20. ipv4v6双栈技术_IPv6过渡技术之双栈技术

热门文章

  1. 【已解决】小米手机5解BL锁时出现错误码20091怎么办?| 小米手机5怎么解Bootloader锁 | 小米5获取ROOT权限 | 小米手机5卡槽坏了无法正常读取手机卡怎么解锁BL
  2. Android学习之GreenDao最全面的使用详解(搭建+入门使用+基本语法)
  3. 渲染算法学习(三)-- Materials
  4. 51单片机中断系统实验
  5. 数据库案例——查询选择了大学语文而没有选择线性代数的学生
  6. 加速GPU,加速NVIDIA
  7. unreal-教程-第十七章:上半身动画和下半身动画的混合
  8. 零基础学Android开发系列
  9. 在OpenCV里图像数据与一维数组转换
  10. 【Keras+TensorFlow+Yolo3】教你如何识别影视剧模型