↑↑↑关注后”星标”简说Python
人人都可以简单入门Python、爬虫、数据分析 简说Python推荐
来源:简说Python作者:老表
大家好,我是老表,今天这篇文章是两年半前写的,这几天在翻以前写的好文章分享给大家,毕竟两年半前只有不到1000读者,现在有4.5w+,应该还是有蛮多读者没有看过,文末可以获取本文完整源码。
本文目录
一、wxpy基本介绍与安装
1.wxpy基本介绍
2.wxpy安装
二、实践出真知
1.给自己的文件传输助手发消息
2.给指定朋友发送消息
3.群发消息(今早醒来突发奇想,给每人发个早安!)
4.获取自己的微信好友数、活跃微信群数、关注微信公众号数
5.个人聊天机器人搭建(基于自己的)
(1)自己的聊天机器人
(2)聊天效果图
6.个人聊天机器人搭建(基于图灵机器人的)
(1)事前准备
(2) 创建属于自己的聊天机器人
(3)聊天效果图
7.来点有趣的
(1)获取微信好友性别、位置分布数据
(2)利用Matplotlib进行数据可视化
1)性别占比饼图
2)城市分布条形图
3)好友省份分布地图
4)获取好友微信昵称和个性签名,词云分析
5)获取关注微信公众号名称和基本简介,词云分析
三、后言
前言
本文是X先生这几天简单看了一下Python里的
wxpy
模块后,搭配matplotlib
模块撰写的一个wxpy
基本使用方法教程,也研究了一些比较好玩的东西,主要利用了wxpy
对微信进行一系列的自动化操作,比如利用wxpy
登录微信、给微信文件助手发送消息、给单个微信好友发送消息、微信消息群发(谨慎使用[/邪笑])以及微信聊天机器的搭建使用过程,你以为wxpy
只能这样?No,最后X先生利用wxpy
获取了我的微信好友的数量、性别、城市、省份、昵称及个性签名,和关注的微信公众号昵称、公众号简介信息,搭配matplotlib
进行了一系列数据的可视化,中间参杂着X先生的一些东倒西歪的文字分析,从这些,,,我解读出了一个真实的我(文末正解)。
一、wxpy基本介绍与安装
1.wxpy基本介绍
wxpy基于itchat,使用了 Web 微信的通讯协议,通过大量接口优化提升了模块的易用性,并进行丰富的功能扩展。实现了微信登录、收发消息、搜索好友、数据统计、微信公众号、微信好友、微信群基本信息获取等功能。
可用来实现各种微信个人号的自动化操作。
2.wxpy安装方法
方法一:直接安装
pip install wxpy
方法二:豆瓣源安装(推荐)
pip install -i https://pypi.douban.com/simple/ wxpy
二、实践出真知
1.给自己的文件传输助手发消息
from wxpy import *
# 初始化一个机器人对象
bot = Bot(cache_path=True)
# 向文件传输助手发送消息
bot.file_helper.send("hello,I'm XksA!")
Bot
类基本参数介绍:
cache_path –
设置当前会话的缓存路径,并开启缓存功能;为 None (默认) 则不开启缓存功能。
开启缓存后可在短时间内避免重复扫码,缓存失效时会重新要求登陆。
设为 True 时,使用默认的缓存路径 ‘wxpy.pkl’。
qr_path – 保存二维码的路径
console_qr – 在终端中显示登陆二维码
运行后弹出一个二维码图片,用微信扫码登录即可,再回来看手机消息。
KeyError: 'pass_ticket'
。
2.给指定朋友发送消息
# 初始化一个机器人对象
# cache_path缓存路径,给定值为第一次登录生成的缓存文件路径
bot = Bot(cache_path="H:\PyCoding\Wxpy_test\wxpy.pkl")
# 查找朋友"极简XksA"
my_friend = bot.friends().search('极简XksA')[0]
# 发送消息
my_friend.send('hello 极简XksA!')
'''
除此之外还有可以发送一下内容,自己动手尝试吧
发送图片
my_friend.send_image('hello.png')
发送视频
my_friend.send_video('hello.mp4')
发送文件
my_friend.send_file('hello.rar')
'''
运行结果:
3.群发消息(今早醒来突发奇想,给每人发个早安!)
import time
# 初始化一个机器人对象
# cache_path为登录状态缓存路径,给定值为第一次登录生成的缓存文件路径
bot = Bot(cache_path="H:\PyCoding\Wxpy_test\wxpy.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('不用回复,生活中一起加油!')
运行效果:
4.获取自己的微信好友数、活跃微信群数、关注微信公众号数
# 获取所有好友[返回列表包含Chats对象(你的所有好友,包括自己)]
t0 = bot.friends(update=False)
# 查看自己好友数(除开自己)
print("我的好友数:"+str(len(t0)-1))
# 获取所有微信群[返回列表包含Groups对象]
t1 = bot.groups(update=False)
# 查看微信群数(活跃的)
print("我的微信群聊数:"+str(len(t1)))
# 获取所有关注的微信公众号[返回列表包含Chats对象]
t2 = bot.mps(update=False)
# 查看关注的微信公众号数
print("我关注的微信公众号数:"+str(len(t2)))
运行结果:
# 注:如果直接把t0、t1、t2打印出就是对应得名称(不同类型,自己可以试一下)
我的好友数:242
我的微信群聊数:6
我关注的微信公众号数:125
5.个人聊天机器人搭建(基于自己的)
(1)自己的聊天机器人
# 查找聊天对象
my_friend = bot.friends().search('极简XksA')[0]
my_friend.send('hello 极简XksA!')
# 自动回复
# 如果想对所有好友实现机器人回复把参数 my_friend 改成 chats = [Friend]
@bot.register(my_friend)
def my_friednd_message(msg):
print('[接收]' + str(msg))
if msg.type != 'Text': # 除文字外其他消息回复内容
ret = '你给我看了什么![拜托]'
elif "你来自哪里" in str(msg): # 特定问题回答
ret = "我来自极简XksA"
else: # 文字消息自动回答
ret = '我爱你'
print('[发送]' + str(ret))
return ret
# 进入交互式的 Python 命令行界面,并堵塞当前线程
embed()
(2)聊天效果图
6.个人聊天机器人搭建(基于图灵机器人的)
(1)事前准备
点击这里注册图灵机器人账号,然后创建一个机器人,即可获得属于你的图灵机器人api。
(2) 创建属于自己的聊天机器人
-
方法一:使用
Tuling
类,简单实现
# 登录缓存路径,第一次设置为True
# 生成缓存文件wxpy.pkl后,为该文件路径
bot = Bot(cache_path="H:\PyCoding\Wxpy_test\wxpy.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()
-
方法二:自己手动发送
post
请求,有点麻烦哈哈哈~
def auto_ai(text):
url = "http://www.tuling123.com/openapi/api"
api_key = "你的图灵接口api"
payload = {
"key": api_key,
"info": text,
"userid": "老表"
}
r = requests.post(url, data=json.dumps(payload))
result = json.loads(r.content)
return "[极简机器人] " + result["text"]
bot = Bot(cache_path="H:\PyCoding\Wxpy_test\wxpy.pkl")
print('极简机器人已经启动')
# 我的小号,测试需谨慎
my_friednd = bot.friends().search('极简XksA')[0]
# 如果想对所有好友实现机器人回复把参数my_friend改成chats = [Friend]
@bot.register(my_friednd)
def my_friednd_message(msg):
print('[接收]' + str(msg))
if msg.type != 'Text':
ret = '你给我看了什么![拜托]'
else:
ret = auto_ai(msg.text)
print('[发送]' + str(ret))
return ret
# 进入交互式的 Python 命令行界面,并堵塞当前线程
embed()
(3)聊天效果图
基本测试,图灵机器人可以实现查询天气、车票、翻译、基本聊天等功能,比我们自己写的,强,,,哈哈哈。
7.来点有趣的
(1)获取微信好友性别、位置分布数据
'''
author : 极简XksA
data : 2018.8.26
goal : 获取微信好友性别、分布、微信昵称,可视化分析
'''
from wxpy import *
# 初始化一个机器人对象
# cache_path缓存路径,给定值为第一次登录生成的缓存文件路径
bot = Bot(cache_path="H:\PyCoding\Wxpy_test\wxpy.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())
运行结果:
老表 共有 245 位微信好友
男性: 140 (57.1%)
女性: 79 (32.2%)
TOP 10 省份
湖北: 88 (35.92%)
广东: 16 (6.53%)
北京: 12 (4.90%)
湖南: 5 (2.04%)
上海: 5 (2.04%)
浙江: 4 (1.63%)
河南: 4 (1.63%)
安徽: 3 (1.22%)
山东: 3 (1.22%)
福建: 3 (1.22%)
TOP 10 城市
荆州: 25 (10.20%)
武汉: 22 (8.98%)
黄石: 21 (8.57%)
海淀: 5 (2.04%)
广州: 5 (2.04%)
深圳: 4 (1.63%)
黄冈: 4 (1.63%)
杭州: 3 (1.22%)
长沙: 3 (1.22%)
昌平: 3 (1.22%)
(2)利用Matplotlib进行数据可视化
1)性别占比饼图
from pylab import *
mpl.rcParams['font.sans-serif'] = ['SimHei']
# 上面两行代码解决matplotlib绘图不能显示中文问题
import matplotlib.pyplot as plt
labels = ['男性', '女性', '其他']
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)城市分布条形图
import numpy as np
import matplotlib.pyplot as plt
n_groups = 10
# 城市分布数量权值
city_weight = (10.2,8.98,8.57,2.04,2.04,1.63,1.63,1.22,1.22,1.22)
fig, ax = plt.subplots()
index = np.arange(n_groups)
bar_width = 0.35
opacity = 0.4
error_config = {'ecolor': '0.3'}
rects1 = ax.bar(index, city_weight, bar_width,alpha=opacity, color='b', error_kw=error_config,label='城市')
ax.set_xlabel('城市名称')
ax.set_ylabel('数据占比(%)')
ax.set_title('好友城市Top10')
ax.set_xticks(index + bar_width / 2)
ax.set_xticklabels(('荆州', '武汉', '黄石', '海淀', '广州','深圳', '黄冈', '杭州', '长沙', '昌平'))
ax.legend()
fig.tight_layout()
plt.show()
效果图:
从图中容易看出X先生好友多在荆州,那猜猜X先生是哪里的人?没错,就是荆州人嘿,你的好友里是不是也是家乡人最多呢?(突然的想家!)
3)好友省份分布图
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)获取好友微信昵称和个性签名,词云分析
bot = Bot(cache_path="H:\PyCoding\Wxpy_test\wxpy.pkl")
#获取好友列表(包括自己)
my_friends = bot.friends(update=False)
# 微信昵称
nick_name = ''
# 微信个性签名
wx_signature = ''
for friend in my_friends:
# 微信昵称:NickName
nick_name = nick_name + friend.raw['NickName']
# 个性签名:Signature
wx_signature = wx_signature + friend.raw['Signature']
nick_name = jiebaclearText(nick_name)
wx_signature = jiebaclearText(wx_signature)
make_wordcloud(nick_name,1)
make_wordcloud(wx_signature,2)
效果图:
我的微信好友昵称,有点复杂,搞淘宝的,浩浩,石头,还有创业,当然最醒目的是老师,都说老师是园丁,谢谢您养育了我们(突发其感)。
我发现他们可以练成一段话:我们所有的人生,就是平凡的自己最伟大,遇见一个美好的自己,一生不止生活,加油。。。
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)
效果图:
看出什么蹊跷没?你问我爱你有多深,你看看Python就知道了哈哈!
基本可以看出我关注的都是积极向上的嘿,真优秀,搞技术的人应该有的公众号(极简XksA),嘿嘿,Java,Python,英语,数据,爬虫…
三、后言
总结
从上面的数据可视化结果,我推测出这样的我:X先生,微信昵称老表,性别男,坐标地址湖北荆州,好友中男性居多,说明事业心重,女性也不少,说明女人缘也不错,微信好友个性签名基本积极向上,有
生活
,有奋斗
,有喜欢
,所关注微信公众号大多数技术相关的,专注于Python
,也有时候三心二意玩Java
,应该是一名大学生,还关注有大学官方公众号。。。哈哈哈(以上纯属X先生自卖自夸,好像还蛮有道理的嘿!)
撰写本文纯是笔者兴趣,嘿嘿,欢迎交流学习!
X先生主要研究Python数据分析及可视化,个人公众号:极简XksA,长期分享学习笔记和学习资源,先在新建了一个学习交流群,想加群交流的麻烦扫描下方二维码(或者搜索:zs820553471),备注:python学习(本来之前是直接给的群二维码,但是有不良推广者趁机而入,所以加群先加我微信,避免对群里的朋友产生不必要的干扰,营造一个好的学习交流环境)。
本文参考文档:
1.wxpy官方介绍文档
2.matplotlib官方介绍文档
本文所有源代码已经上传到码云上:点击阅读原文查看。
–END–
推荐图书
图书介绍:给本文点赞(“在看”不作要求),扫描下方二维码,添加老表的微信。把点赞截图发给我,我会发送抽奖码给大家,时间截止至06月06号 20:00。抽三位读者朋友,可获得《Python自动化测试实战》赠书一本。
扫码即可加我微信
老表朋友圈经常有赠书/红包福利活动
学习更多:整理了我开始分享学习笔记到现在超过250篇优质文章,涵盖数据分析、爬虫、机器学习等方面,别再说不知道该从哪开始,实战哪里找了
优秀的读者都知道,“点赞”传统美德不能丢
今天的文章python进行微信好友分析_模拟黑科技微信分享到此就结束了,感谢您的阅读。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/81459.html