搭配Matplotlib进行了一系列数据的可视化,中间参杂着笔者的一些东倒西歪的文字分析,从这些,我解读出了一个真实的我(文末正解)。
wxpy基于itchat,使用了Web微信的通讯协议,通过大量接口优化提升了模块的易用性,并进行丰富的功能扩展。实现了微信登录、收发消息、搜索好友、数据统计、微信公众号、微信好友、微信群基本信息获取等功能。
可用来实现各种微信个人号的自动化操作。
方法一:直接安装
方法二:豆瓣源安装(推荐)
pip install -i https://pypi.douban.com/simple/ wxpy
实践出真知
1.给自己的文件传输助手发消息BOT类基本参数介绍:
cache_path – 设置当前会话的缓存路径,并开启缓存功能;为 None (默认) 则不开启缓存功能。 开启缓存后可在短时间内避免重复扫码,缓存失效时会重新要求登陆。 设为 True 时,使用默认的缓存路径 ‘wxpy.pkl’。qr_path – 保存二维码的路径console_qr – 在终端中显示登陆二维码
运行后弹出一个二维码图片,用微信扫码登录即可,再回来看手机消息。
微信文件传输助手
特别提醒:使用的微信账号不能为新注册的账号,不然会报错Keyerror:'pass_ticket'。
2.给指定朋友发送消息运行结果:
单独好友
import time# 初始化一个机器人对象# cache_path为登录状态缓存路径,给定值为第一次登录生成的缓存文件路径bot = Bot(cache_path='H:PyCodingWxpy_testwxpy.pkl')# 群发消息(谨慎使用,哈哈哈)my_friends = bot.friends(update=False)my_friends.pop(0) # 去除列表第一个元素(自己)for i in range(120): friend = my_friends[i] friend.send('Good morning,the early bird catches the worm!(早上好,早起的鸟儿有虫吃!)') time.sleep(2) friend.send('不用回复,生活中一起加油!')
运行效果:
群发消息效果图
运行结果:
# 注:如果直接把t0、t1、t2打印出就是对应得名称(不同类型,自己可以试一下)我的好友数:242我的微信群聊数:6我关注的微信公众号数:1255.个人聊天机器人搭建(基于自己的)(1)自己的聊天机器人
基于自己的聊天机器人
点击这里注册图灵机器人账号,然后创建一个机器人,即可获得属于你的图灵机器人API。
图灵机器人API获取
(2) 创建属于自己的聊天机器人
# 登录缓存路径,第一次设置为True# 生成缓存文件wxpy.pkl后,为该文件路径bot = Bot(cache_path='H:PyCodingWxpy_testwxpy.pkl') tuling = Tuling(api_key='你的图灵接口api')print('极简机器人已经启动')# 我的小号,测试需谨慎my_friednd = bot.friends().search('极简XksA')[0]# 如果想对所有好友实现机器人回复把参数my_friend改成chats = [Friend]# 使用图灵机器人自动与指定好友聊天@bot.register(my_friend)def reply_my_friend(msg): tuling.do_reply(msg)# 进入交互式的 Python 命令行界面,并堵塞当前线程embed()
基本测试,图灵机器人可以实现查询天气、车票、翻译、基本聊天等功能,比我们自己写的强,哈哈哈。
个人聊天效果图
'''author : 极简XksAdata : 2018.8.26goal : 获取微信好友性别、分布、微信昵称,可视化分析'''from wxpy import *# 初始化一个机器人对象# cache_path缓存路径,给定值为第一次登录生成的缓存文件路径bot = Bot(cache_path='H:PyCodingWxpy_testwxpy.pkl')#获取好友列表(包括自己)my_friends = bot.friends(update=False)'''stats_text 函数:帮助我们简单统计微信好友基本信息简单的统计结果的文本 :param total: 总体数量 :param sex: 性别分布 :param top_provinces: 省份分布 :param top_cities: 城市分布 :return: 统计结果文本'''print(my_friends.stats_text())
运行结果:
(2)利用Matplotlib进行数据可视化
1)性别占比饼图from pylab import *mpl.rcParams['font.sans-serif'] = ['SimHei']# 上面两行代码解决matplotlib绘图不能显示中文问题import matplotlib.pyplot as pltlabels = ['男性', '女性', '其他']sizes = [57.1, 32.2, 10.7]explode = (0, 0.1, 0)fig1, ax1 = plt.subplots()ax1.pie(sizes, explode=explode, labels=labels, autopct='%1.1f%%', shadow=True, startangle=90)# 纵横相等,画成一个圆ax1.axis('equal')plt.legend()plt.show()效果图:
性别占比饼图
2)城市分布条形图我的天啊(自绘),我的微信好友居然是男性居多,嘿嘿,也正常,笔者从不沾花惹草,当然女生也不是特别少嘿,包含了家人朋友还有一些社会人嘿。
城市发布图
3)好友省份分布图从图中容易看出X先生好友多在荆州,那猜猜X先生是哪里的人?没错,就是荆州人嘿,你的好友里是不是也是家乡人最多呢?(突然地想家!)
from pyecharts import Map# matplotlib的方法比较麻烦,显示起来还没pyecharts 好,就用了pyecharts value = [359.2, 65.3, 49.0, 20.4, 20.4, 16.3, 16.3, 12.2, 12.2,12.2]attr = [ '湖北', '广东', '北京', '湖南', '上海', '浙江', '河南', '安徽', '山东','福建' ]map = Map('好友分布省份Top10', width=600, height=400)map.add( '', attr, value, maptype='china', is_visualmap=True, visual_text_color='#000',)map.render()
效果图:
好友省份分布图
4)获取好友微信昵称和个性签名,词云分析是不是很直接明了,我的好友基本在我国中南部,你知道你的好友分布吗?我在长江中下游,这里有水有山,有花有草,有乐园。
微信好友昵称
我的微信好友昵称,有点复杂,搞淘宝的,浩浩,石头,还有创业的,当然最醒目的是老师,都说老师是园丁,谢谢您养育了我们(突发其感)。
微信好友个性签名
5)获取关注微信公众号名称和基本简介,词云分析我发现他们可以练成一段话:我们所有的人生,就是平凡的自己最伟大,遇见一个美好的自己,一生不止生活,加油。。。
# 获取微信公众号名称wx_public_name = ''# 公众号简介wx_pn_signature = ''# 获取微信公众号列表my_wx_pn = bot.mps(update=False)for wx_pn in my_wx_pn: wx_public_name = wx_public_name + wx_pn.raw['NickName'] wx_pn_signature = wx_pn_signature + wx_pn.raw['Signature']wx_public_name = jiebaclearText(wx_public_name)make_wordcloud(wx_public_name,3)wx_pn_signature = jiebaclearText(wx_pn_signature)make_wordcloud(wx_pn_signature,4)
效果图:
联系客服