python-itchat 统计微信群、好友数量,及原始消息数据的实例


Posted in Python onFebruary 21, 2019

参考来自:https://itchat.readthedocs.io/zh/latest/api/

#coding=utf-8
import itchat
from itchat.content import TEXT
from itchat.content import *
import sys
import time
import re
reload(sys)
sys.setdefaultencoding('utf8')
import os

@itchat.msg_register([TEXT,PICTURE,FRIENDS,CARD,MAP,SHARING,RECORDING,ATTACHMENT,VIDEO],isGroupChat=True)
def receive_msg(msg):
 groups = itchat.get_chatrooms(update=True)
 friends = itchat.get_friends(update=True)
 print "群数量:",len(groups)
 for i in range(0,len(groups)):
 print i+1,"--",groups[i]['NickName'],groups[i]['MemberCount'],"人"
 print "好友数量",len(friends)-1
 for f in range(1,len(friends)):#第0个好友是自己,不统计
 if friends[f]['RemarkName']: # 优先使用好友的备注名称,没有则使用昵称
  user_name = friends[f]['RemarkName']
 else:
  user_name = friends[f]['NickName']
 sex = friends[f]['Sex']
 print f,"--",user_name,sex
itchat.auto_login(hotReload=True)
itchat.run()

效果:

python-itchat 统计微信群、好友数量,及原始消息数据的实例

好友:

# 获取自己的用户信息,返回自己的属性字典
itchat.search_friends()
# 获取特定UserName的用户信息
itchat.search_friends(userName='@abcdefg1234567')
# 获取任何一项等于name键值的用户
itchat.search_friends(name='wxceshi')
# 获取分别对应相应键值的用户
itchat.search_friends(wechatAccount='wceshi')
# 三、四项功能可以一同使用
itchat.search_friends(name='wxceshi', wechatAccount='wcceshi')

公众号:

公众号的获取方法为get_mps,将会返回完整的公众号列表。
其中每个公众号为一个字典
传入update键为True将可以更新公众号列表并返回
import itchat
itchat.auto_login(hotReload=True)

mpsList=itchat.get_mps(update=True)[1:]

total=0
for it in mpsList:
 print(it['NickName']+':'+it['Signature'])
 total=total+1

print('公众号的数目是%d'%total)

公众号的搜索方法为search_mps,有两种搜索方法: 
1. 获取特定UserName的公众号 
2. 获取名字中含有特定字符的公众号
如果两项都做了特定,将会仅返回特定UserName的公众号,下面是示例程序:
# 获取特定UserName的公众号,返回值为一个字典
itchat.search_mps(userName='@abcdefg1234567')
# 获取名字中含有特定字符的公众号,返回值为一个字典的列表
itchat.search_mps(name='gzh')
# 以下方法相当于仅特定了UserName
itchat.search_mps(userName='@abcdefg1234567', name='gzh')

群聊:

群聊的获取方法为get_chatrooms,将会返回完整的群聊列表。
其中每个群聊为一个字典
传入update键为True将可以更新群聊列表并返回通讯录中保存的群聊列表
 群聊列表为后台自动更新,如果中途意外退出存在极小的概率产生本地群聊消息与后台不同步
 为了保证群聊信息在热启动中可以被正确的加载,即使不需要持续在线的程序也需要运行itchat.run()
 如果不想要运行上述命令,请在退出程序前调用-itchat.dump_login_status(),更新热拔插需要的信息

import itchat
itchat.auto_login(hotReload=True)

#itchat.run()

mpsList=itchat.get_chatrooms(update=True)[1:]

total=0
for it in mpsList:
 print(it['NickName'])
 total=total+1

print('群聊的数目是%d'%total)

#显示所有的群聊,包括未保存在通讯录中的,如果去掉则只是显示在通讯录中保存的
itchat.dump_login_status()
群聊的搜索方法为search_chatrooms,有两种搜索方法: 1. 获取特定UserName的群聊 2. 获取名字中含有特定字符的群聊
如果两项都做了特定,将会仅返回特定UserName的群聊,下面是示例程序:
# 获取特定UserName的群聊,返回值为一个字典
itchat.search_chatrooms(userName='@abcdefg1234567')
# 获取名字中含有特定字符的群聊,返回值为一个字典的列表
itchat.search_chatrooms(name='LittleCoder')
# 以下方法相当于仅特定了UserName
itchat.search_chatrooms(userName='@abcdefg1234567', name='LittleCoder')
群聊用户列表的获取方法为update_chatroom。

 群聊在首次获取中不会获取群聊的用户列表,所以需要调用该命令才能获取群聊的成员
 该方法需要传入群聊的UserName,返回特定群聊的用户列表
memberList = itchat.update_chatroom('bcdefg67')
创建群聊、增加、删除群聊用户的方法如下所示:

 由于之前通过群聊检测是否被好友拉黑的程序,目前这三个方法都被严格限制了使用频率
 删除群聊需要本账号为群管理员,否则会失败
 将用户加入群聊有直接加入与发送邀请,通过useInvitation设置
 超过40人的群聊无法使用直接加入的加入方式,特别注意
memberList = itchat.get_friends()[1:]
# 创建群聊,topic键值为群聊名
chatroomUserName = itchat.create_chatroom(memberList, 'test chatroom')
# 删除群聊内的用户
itchat.delete_member_from_chatroom(chatroomUserName, memberList[0])
# 增加用户进入群聊
itchat.add_member_into_chatroom(chatroomUserName, memberList[0], useInvitation=False)

消息的基础数据:

群基础信息:列表,每个元素是一个群,字典,列表长度就是群的数量.

UserName -- @@410e35039bc309eaa37e444fc932cf1f0d11b6e79d9eff610fc971701940778b
City -- 
MemberList -- [{u'UserName': u'@2a1f4757bbedbbc1c58be274655e7e69823fcf8288bb50aa0ec9769698b883f5', u'RemarkPYQuanPin': u'', u'DisplayName': u'', u'KeyWord': u'', u'PYInitial': u'', u'Uin': 0, u'RemarkPYInitial': u'', u'PYQuanPin': u'', u'MemberStatus': 0, u'NickName': u'\u82b1\u82e5\u96e8', u'AttrStatus': 233509}, {u'UserName': u'@91271c0895c75b4290c4d71673040978b50c1d81005b768728497bbcfc9657f3', u'RemarkPYQuanPin': u'', u'DisplayName': u'', u'KeyWord': u'', u'PYInitial': u'', u'Uin': 0, u'RemarkPYInitial': u'', u'PYQuanPin': u'', u'MemberStatus': 0, u'NickName': u'alise', u'AttrStatus': 235617}, {u'UserName': u'@6151801ec2a6333e7fd5530f812c931e14d9220477756796013ae3cbab54b64f', u'RemarkPYQuanPin': u'', u'DisplayName': u'\u81f3\u5c0a\u7389-\u5c0f\u9e1f\u98de', u'KeyWord': u'', u'PYInitial': u'', u'Uin': 0, u'RemarkPYInitial': u'', u'PYQuanPin': u'', u'MemberStatus': 0, u'NickName': u'\u81f3\u5c0a\u7389', u'AttrStatus': 102525}]

VerifyFlag -- 0
Province -- 
KeyWord -- 
RemarkName -- 
self -- {u'UserName': u'@2a1f4757bbedbbc1c58be274655e7e69823fcf8288bb50aa0ec9769698b883f5', u'RemarkPYQuanPin': u'', u'DisplayName': u'', u'KeyWord': u'', u'PYInitial': u'', u'Uin': 0, u'RemarkPYInitial': u'', u'PYQuanPin': u'', u'MemberStatus': 0, u'NickName': u'\u82b1\u82e5\u96e8', u'AttrStatus': 233509}
isAdmin -- None
ContactType -- 0
HideInputBarFlag -- 0
AttrStatus -- 0
SnsFlag -- 0
MemberCount -- 3
OwnerUin -- 0
Alias -- 
Signature -- 
ContactFlag -- 2
NickName -- 一只小鸟飞
ChatRoomOwner -- @2a1f4757bbedbbc1c58be274655e7e69823fcf8288bb50aa0ec9769698b883f5
HeadImgUrl -- /cgi-bin/mmwebwx-bin/webwxgetheadimg?seq=0&username=@@410e35039bc309eaa37e444fc932cf1f0d11b6e79d9eff610fc971701940778b&skey=@crypt_f707bac_06ef94d1305fd1ebf9192f58bdee290c
Sex -- 0
Statues -- 1
HeadImgUpdateFlag -- 1

好友基础信息:列表,每个元素是一个好友字典,列表长度即好友数量。(自己是第0个好友)

UserName -- @6151801ec2a6333e7fd5530f812c931e14d9220477756796013ae3cbab54b64f
City -- 朝阳
DisplayName -- 
UniFriend -- 0
MemberList -- []
PYQuanPin -- zhizunyu
RemarkPYInitial -- ZZYBZ
Sex -- 1
AppAccountFlag -- 0
VerifyFlag -- 0
Province -- 北京
KeyWord -- 
RemarkName -- 至尊玉备注
PYInitial -- ZZY
IsOwner -- 0
ChatRoomId -- 0
ContactType -- 0
HideInputBarFlag -- 0
EncryChatRoomId -- 
AttrStatus -- 102525
SnsFlag -- 17
MemberCount -- 0
OwnerUin -- 0
Alias -- 
Signature -- 本来无一物,何处惹尘埃。
ContactFlag -- 3
NickName -- 至尊玉
ChatRoomOwner -- 
RemarkPYQuanPin -- zhizunyubeizhu
HeadImgUrl -- /cgi-bin/mmwebwx-bin/webwxgeticon?seq=656993295&username=@6151801ec2a6333e7fd5530f812c931e14d9220477756796013ae3cbab54b64f&skey=@crypt_f707bac_06ef94d1305fd1ebf9192f58bdee290c
Uin -- 0
StarFriend -- 0
Statues -- 0
HeadImgUpdateFlag -- 1

好友消息:每条消息是一个字典。消息内容:msg['Content']

AppInfo -- {u'Type': 0, u'AppID': u''}
ImgWidth -- 0
FromUserName -- @6151801ec2a6333e7fd5530f812c931e14d9220477756796013ae3cbab54b64f
PlayLength -- 0
OriContent -- 
ImgStatus -- 1
RecommendInfo -- {u'UserName': u'', u'Province': u'', u'City': u'', u'Scene': 0, u'QQNum': 0, u'Content': u'', u'Alias': u'', u'OpCode': 0, u'Signature': u'', u'Ticket': u'', u'Sex': 0, u'NickName': u'', u'AttrStatus': 0, u'VerifyFlag': 0}
Content -- This is friend msg
MsgType -- 1
ImgHeight -- 0
StatusNotifyUserName -- 
StatusNotifyCode -- 0
Type -- Text
NewMsgId -- 4967860504982482776
Status -- 3
VoiceLength -- 0
MediaId -- 
MsgId -- 4967860504982482776
ToUserName -- @2a1f4757bbedbbc1c58be274655e7e69823fcf8288bb50aa0ec9769698b883f5
ForwardFlag -- 0
FileName -- 
Url -- 
HasProductId -- 0
FileSize -- 
AppMsgType -- 0
Text -- This is friend msg
Ticket -- 
CreateTime -- 1515398261
EncryFileName -- 
SubMsgType -- 0

群聊消息:
ActualNickName -- 至尊玉-小鸟飞 #用户在群内的昵称
AppInfo -- {u'Type': 0, u'AppID': u''}
ImgWidth -- 0
FromUserName -- @@410e35039bc309eaa37e444fc932cf1f0d11b6e79d9eff610fc971701940778b #来个哪个群聊
PlayLength -- 0
OriContent -- 
ImgStatus -- 1
RecommendInfo -- {u'UserName': u'', u'Province': u'', u'City': u'', u'Scene': 0, u'QQNum': 0, u'Content': u'', u'Alias': u'', u'OpCode': 0, u'Signature': u'', u'Ticket': u'', u'Sex': 0, u'NickName': u'', u'AttrStatus': 0, u'VerifyFlag': 0}
Content -- This is a group msg
MsgType -- 1
CreateTime -- 1515398528
ImgHeight -- 0
StatusNotifyUserName -- 
StatusNotifyCode -- 0
Type -- Text
NewMsgId -- 4737322597592466590
Status -- 3
VoiceLength -- 0
MediaId -- 
MsgId -- 4737322597592466590
ToUserName -- @2a1f4757bbedbbc1c58be274655e7e69823fcf8288bb50aa0ec9769698b883f5 #发给自己的
ForwardFlag -- 0
FileName -- 
Url -- 
HasProductId -- 0
FileSize -- 
AppMsgType -- 0
Text -- This is a group msg
ActualUserName -- @6151801ec2a6333e7fd5530f812c931e14d9220477756796013ae3cbab54b64f #谁发的消息
Ticket -- 
isAt -- False
EncryFileName -- 
SubMsgType -- 0

以上这篇python-itchat 统计微信群、好友数量,及原始消息数据的实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python时间获取及转换知识汇总
Jan 11 Python
Python使用matplotlib和pandas实现的画图操作【经典示例】
Jun 13 Python
Python闭包函数定义与用法分析
Jul 20 Python
python爬虫之线程池和进程池功能与用法详解
Aug 02 Python
python pandas消除空值和空格以及 Nan数据替换方法
Oct 30 Python
Python数据报表之Excel操作模块用法分析
Mar 11 Python
Django中间件基础用法详解
Jul 18 Python
python文件操作的简单方法总结
Nov 07 Python
如何基于python测量代码运行时间
Dec 25 Python
python爬虫库scrapy简单使用实例详解
Feb 10 Python
python3.8动态人脸识别的实现示例
Sep 21 Python
Python 制作查询商品历史价格的小工具
Oct 20 Python
python+mysql实现学生信息查询系统
Feb 21 #Python
使用Python+wxpy 找出微信里把你删除的好友实例
Feb 21 #Python
利用Python对文件夹下图片数据进行批量改名的代码实例
Feb 21 #Python
Python 微信之获取好友昵称并制作wordcloud的实例
Feb 21 #Python
Python基于opencv调用摄像头获取个人图片的实现方法
Feb 21 #Python
python-itchat 获取微信群用户信息的实例
Feb 21 #Python
python 获取微信好友列表的方法(微信web)
Feb 21 #Python
You might like
PHP调用三种数据库的方法(3)
2006/10/09 PHP
PHP的反射类ReflectionClass、ReflectionMethod使用实例
2014/08/05 PHP
深入分析PHP引用(&)
2014/09/04 PHP
Laravel中注册Facades的步骤详解
2016/03/16 PHP
laravel 5.4中实现无限级分类的方法示例
2017/07/27 PHP
RR vs IO BO3 第二场2.13
2021/03/10 DOTA
比较详细的javascript对象的property和prototype是什么一种关系
2007/08/06 Javascript
JavaScript中使用构造函数实现继承的代码
2010/08/12 Javascript
jquery中文乱码的多种解决方法
2013/06/21 Javascript
node.js中的buffer.Buffer.byteLength方法使用说明
2014/12/10 Javascript
node.js中的fs.realpath方法使用说明
2014/12/16 Javascript
javascript常用功能汇总
2015/07/05 Javascript
深入剖析JavaScript编程中的对象概念
2015/10/21 Javascript
在Node.js中使用Javascript Generators详解
2016/05/05 Javascript
knockoutjs动态加载外部的file作为component中的template数据源的实现方法
2016/09/01 Javascript
js实现登录框鼠标拖拽效果
2017/03/09 Javascript
使用JQuery实现图片轮播效果的实例(推荐)
2017/10/24 jQuery
详解使用 Node.js 开发简单的脚手架工具
2018/06/08 Javascript
vue 检测用户上传图片宽高的方法
2020/02/06 Javascript
Python translator使用实例
2008/09/06 Python
基于Python代码编辑器的选用(详解)
2017/09/13 Python
Python图像处理PIL各模块详细介绍(推荐)
2019/07/17 Python
python用线性回归预测股票价格的实现代码
2019/09/04 Python
原来我一直安装 Python 库的姿势都不对呀
2019/11/11 Python
Python常用base64 md5 aes des crc32加密解密方法汇总
2020/11/06 Python
美国在线奢侈品寄售商店:Luxury Garage Sale
2018/08/19 全球购物
销售会计工作职责
2013/12/02 职场文书
公司大门门卫岗位职责
2014/06/11 职场文书
小学开学标语
2014/07/01 职场文书
学校关爱留守儿童活动方案
2014/08/27 职场文书
2015年建筑工程工作总结
2015/05/13 职场文书
党支部季度考核意见
2015/06/02 职场文书
闪闪红星观后感
2015/06/08 职场文书
2015最新民情日记范文
2015/06/26 职场文书
SQL Server中使用判断语句(IF ELSE/CASE WHEN )案例
2021/07/07 SQL Server
Oracle中update和select 关联操作
2022/01/18 Oracle