Python使用微信itchat接口实现查看自己微信的信息功能详解


Posted in Python onAugust 22, 2019

本文实例讲述了Python使用微信itchat接口实现查看自己微信的信息功能。分享给大家供大家参考,具体如下:

itchat是python的一个api,可以访问自己的微信信息,功能还蛮好玩的,可以扒取朋友信息,自动回复短信等等。

package:

itchat1.3.10 + python3.5 + wordcloud1.4.1

登录登出:

itchat.login()
#hotReload设置为True,可以保持一段时间登录
itchat.autologin(hotReload=True)
itchat.logout()

获取朋友数据:

friends = itchat.get_friends(update=True)[0:]

搜索某个朋友:

itchat.search_friends(name='name')
itchat.search_friends(wechatAccount='wechatid')

公众号和群聊的获取方式也是类似的:

itchat.get_mps(update=True)[0:]
itchat.search_mps()
itchat.get_chatrooms(update=True)[0:]
itchat.search_chatroom()

发信息:

itchat.send(msg='Received Your Message',toUserName=userName])
#username其实是一个id,nickname是微信名字,remarkname是备注名

自动回复信息:

@itchat.msg_register(itchat.content.TEXT)
def simple_reply(recv_msg):
  msg = recv_msg['Text']
  if msg == 'name':
    itchat.send(msg=u'Received name from',toUserName=recv_msg['FromUserName'])
  elif msg == 'age':
    itchat.send(msg=u'Received age from',toUserName=recv_msg['FromUserName'])
itchat.run()
#register也接受其他参数,比如说isGroupChat=True用来只自动回复群聊信息

register还可以注册其他参数:

MAP 地理位置的分享
CARD 名片信息
SHARING 链接分享
PICTURE 表情或照片
RECORDING 语音
ATTACHMENT 附件
VIDEO 视频
FRIENDS 加好友申请,也就是说发起的一个好友申请其实是一条特殊的信息
SYSTEM 系统消息,比如系统推送消息或者是某个群成员发生变动等等
NOTE 通知文本,比如撤回了消息等等

例子:拉取朋友数据,用wordcloud可视化朋友signature

先读取数据

import itchat
itchat.login()
friends = itchat.get_friends(update=True)[0:]

简单分析下性别比例

male = female = other = 0
#friends[0] is personal information, friends start from 1
for i in friends[1:]:
  sex = i["Sex"]
  if sex == 1:
    male += 1
  elif sex == 2:
    female += 1
  else:
    other +=1
total = len(friends[1:])
print("male: %.2f%%" % (float(male)/total*100) + "\n" +
"female: %.2f%%" % (float(female) / total * 100) + "\n" +
"unknown: %.2f%%" % (float(other) / total * 100))

获得各个参数,存入本地

filename = '' #需要修改这里
#爬取各个变量
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')
from pandas import DataFrame
data = {'NickName': NickName, 'Sex': Sex, 'Province': Province,
    'City': City, 'Signature': Signature}
frame = DataFrame(data)
frame.to_csv(filename, index=True)

去除特殊字符和转义字符等

import re
siglist = []
for i in friends:
  signature = i["Signature"].strip().replace("span","").replace("class","").replace("emoji","")
  rep = re.compile("1f\d+\w*|[<>/=]")
  signature = rep.sub("", signature)
  siglist.append(signature)

查看signature列表

#去掉末尾的空格以及空的签名
while '' in siglist:
  siglist.remove('')
for i in range(len(siglist)):
  siglist[i].strip()
  print(i,siglist[i])
#wordcloud读取数据要求为string,以空格隔开
text = "".join(siglist)

可视化签名

import matplotlib.pyplot as plt
from wordcloud import WordCloud, ImageColorGenerator
import numpy as np
import PIL.Image as Image
picture_path = '' #这里需要修改
coloring = np.array(Image.open(picture_path))
my_wordcloud = WordCloud(background_color="white", max_words=2000, font_path="2.ttf",
             mask = coloring, max_font_size=60, random_state=42, scale=2).generate(text)
image_colors = ImageColorGenerator(coloring)
plt.imshow(my_wordcloud.recolor(color_func=image_colors))
plt.imshow(my_wordcloud)
plt.axis("off")
plt.show()

保存:

save_path = '' #这里需要修改
my_wordcloud.to_file(save_path)

这里是以自己选的picture为形状,生成词云,以下是我的生成结果:

 Python使用微信itchat接口实现查看自己微信的信息功能详解

希望本文所述对大家Python程序设计有所帮助。

Python 相关文章推荐
python基于xml parse实现解析cdatasection数据
Sep 30 Python
简述Python中的面向对象编程的概念
Apr 27 Python
Python中Continue语句的用法的举例详解
May 14 Python
利用Celery实现Django博客PV统计功能详解
May 08 Python
Python 模拟登陆的两种实现方法
Aug 10 Python
Python中执行存储过程及获取存储过程返回值的方法
Oct 07 Python
微信跳一跳自动运行python脚本
Jan 08 Python
python实现对指定输入的字符串逆序输出的6种方法
Apr 26 Python
pandas 把数据写入txt文件每行固定写入一定数量的值方法
Dec 28 Python
浅析Python 中几种字符串格式化方法及其比较
Jul 02 Python
Python argparse模块应用实例解析
Nov 15 Python
利用Python代码实现一键抠背景功能
Dec 29 Python
简单了解python 生成器 列表推导式 生成器表达式
Aug 22 #Python
Python实现的微信红包提醒功能示例
Aug 22 #Python
Python PIL图片添加字体的例子
Aug 22 #Python
在python image 中安装中文字体的实现方法
Aug 22 #Python
解决Python3用PIL的ImageFont输出中文乱码的问题
Aug 22 #Python
用Pelican搭建一个极简静态博客系统过程解析
Aug 22 #Python
Django admin.py 在修改/添加表单界面显示额外字段的方法
Aug 22 #Python
You might like
Search File Contents PHP 搜索目录文本内容的代码
2010/02/21 PHP
解析thinkphp基本配置 convention.php
2013/06/18 PHP
PHP CURL或file_get_contents获取网页标题的代码及两者效率的稳定性问题
2015/11/30 PHP
PHP判断是否是微信打开,浏览器打开的方法
2018/03/14 PHP
php实现单笔转账到支付宝功能
2018/10/09 PHP
Mootools 1.2教程 同时进行多个形变动画
2009/09/15 Javascript
基于JQuery的访问WebService的代码(可访问Java[Xfire])
2010/11/19 Javascript
基于jQuery判断两个元素是否有重叠部分的代码
2012/07/25 Javascript
javascript通过class来获取元素实现代码
2013/02/20 Javascript
javascipt匹配单行和多行注释的正则表达式
2013/11/20 Javascript
深入剖析JavaScript中的枚举功能
2014/03/06 Javascript
举例简介AngularJS的内部语言环境
2015/06/17 Javascript
jquery的幻灯片图片切换效果代码分享
2015/09/07 Javascript
js实现的星星评分功能函数
2015/12/09 Javascript
详解nodejs中的process进程
2017/03/19 NodeJs
完美解决mui框架off-canvas侧滑超出部分隐藏无法滚动的问题
2018/01/25 Javascript
使用angular-cli webpack创建多个包的方法
2018/10/16 Javascript
[59:35]DOTA2上海特级锦标赛主赛事日 - 3 败者组第三轮#1COL VS Alliance第二局
2016/03/04 DOTA
python xml解析实例详解
2016/11/14 Python
Python3之字节串bytes与字节数组bytearray的使用详解
2019/08/27 Python
Django异步任务线程池实现原理
2019/12/17 Python
解决Pycharm 中遇到Unresolved reference 'sklearn'的问题
2020/07/13 Python
Python生成pdf目录书签的实例方法
2020/10/29 Python
时尚、社区、科技:SEVENSTORE
2019/04/26 全球购物
请说出以下代码输出什么
2013/08/30 面试题
党委书记岗位职责
2013/11/24 职场文书
个人对照检查材料
2014/02/12 职场文书
机关党员2014全国两会学习心得体会
2014/03/10 职场文书
小学生母亲节演讲稿
2014/05/07 职场文书
巾帼志愿者活动方案
2014/08/17 职场文书
副乡长民主生活会个人对照检查材料思想汇报
2014/10/01 职场文书
2015年幼儿园新年寄语
2014/12/08 职场文书
中学综治宣传月活动总结
2015/05/07 职场文书
劳动保障事务所个人工作总结
2015/08/12 职场文书
用javascript制作qq注册动态页面
2021/04/14 Javascript
Linux安装Docker详细教程
2022/07/07 Servers