python训练营微信广告_当Python遇上微信,可以这么玩
词云那里可以换成小黄人图片
---------------------------------------------------------------------------------------------------
0. itchat
最近研究了一些微信的玩法,我们可以通过网页版的微信微信网页版,扫码登录后去抓包爬取信息,还可以post去发送信息。
然后发现了itchat这个开源项目,
安装itchat这个库
pip install itchat
先来段简单的试用,实现微信的登录,运行下面代码会生成一个二维码,扫码之后手机端确认登录,就会发送一条信息给‘filehelper’,这个filehelper就是微信上的文件传输助手。
import itchat
# 登录
itchat.login()
# 发送消息
itchat.send(u'你好', 'filehelper')
除了登录和发送消息我们还可以这么来玩,往下走~
1. 微信好友男女比例
想统计下自己微信里好友的性别比例,当然也是很简单,先获取好友列表,统计列表里性别计数
import itchat
# 先登录
itchat.login()
# 获取好友列表
friends = itchat.get_friends(update=True)[0:]
# 初始化计数器,有男有女,当然,有些人是不填的
male = female = other = 0
# 遍历这个列表,列表里第一位是自己,所以从"自己"之后开始计算
# 1表示男性,2女性
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 u"男性好友:%.2f%%" % (float(male) / total * 100)
print u"女性好友:%.2f%%" % (float(female) / total * 100)
print u"其他:%.2f%%" % (float(other) / total * 100)
好看看结果:
(好吧,暴露了我男性友人较多的真相~~)
好像不够直观,有兴趣的朋友可以加上可视化的展示,我这里用基于python的Echarts(有机会再细讲)
先安装了
pip install echarts-python
展示比例一般使用百分比圆饼表吧
# 使用echarts,加上这段
from echarts import Echart, Legend, Pie
chart = Echart(u'%s的微信好友性别比例' % (friends[0]['NickName']), 'from WeChat')
chart.use(Pie('WeChat',
[{'value': male, 'name': u'男性%.2f%%' % (float(male) / total * 100)},
{'value': female, 'name': u'女性%.2f%%' % (float(female) / total * 100)},
{'value': other, 'name': u'其他%.2f%%' % (float(other) / total * 100)}],
radius=["50%", "70%"]))
chart.use(Legend(["male", "female", "other"]))
del chart.json["xAxis"]
del chart.json["yAxis"]
chart.plot()
登登登登~
2. 好友个性签名词云
获取好友列表的时候,返回的json信息中还看到了有个性签名的信息,脑洞一开,把大家的个性签名都抓下来,看看高频词语,还做了个词云。
# coding:utf-8
import itchat
# 先登录
itchat.login()
# 获取好友列表
friends = itchat.get_friends(update=True)[0:]
for i in friends:
# 获取个性签名
signature = i["Signature"]
print signature
先全部抓取下来
打印之后你会发现,有大量的span,class,emoji,emoji1f3c3等的字段,因为个性签名中使用了表情符号,这些字段都是要过滤掉的,写个正则和replace方法过滤掉
for i in friends:
# 获取个性签名
signature = i["Signature"].strip().replace("span", "").replace("class", "").replace("emoji", "")
# 正则匹配过滤掉emoji表情,例如emoji1f3c3等
rep = re.compile("1f\d.+")
signature = rep.sub("", signature)
print signature
接来下用jieba分词,然后制作成词云,首先要安装jieba和wordcloud库
pip install jieba
pip install wordcloud
代码
# coding:utf-8
import itchat
import re
itchat.login()
friends = itchat.get_friends(update=True)[0:]
tList = []
for i in friends:
signature = i["Signature"].replace(" ", "").replace("span", "").replace("class", "").replace("emoji", "")
rep = re.compile("1f\d.+")
signature = rep.sub("", signature)
tList.append(signature)
# 拼接字符串
text = "".join(tList)
# jieba分词
import jieba
wordlist_jieba = jieba.cut(text, cut_all=True)
wl_space_split = " ".join(wordlist_jieba)
# wordcloud词云
import matplotlib.pyplot as plt
from wordcloud import WordCloud
import PIL.Image as Image
# 这里要选择字体存放路径,这里是Mac的,win的字体在windows/Fonts中
my_wordcloud = WordCloud(background_color="white", max_words=2000,
max_font_size=40, random_state=42,
font_path='/Users/sebastian/Library/Fonts/Arial Unicode.ttf').generate(wl_space_split)
plt.imshow(my_wordcloud)
plt.axis("off")
plt.show()
运行代码
这。。好像有点丑,根据wordcloud用法,我可以找一张图来生成配色方案,我这里找了一张微信的logo
修改一下代码
# wordcloud词云
import matplotlib.pyplot as plt
from wordcloud import WordCloud, ImageColorGenerator
import os
import numpy as np
import PIL.Image as Image
d = os.path.dirname(__file__)
alice_coloring = np.array(Image.open(os.path.join(d, "wechat.jpg")))
my_wordcloud = WordCloud(background_color="white", max_words=2000, mask=alice_coloring,
max_font_size=40, random_state=42,
font_path='/Users/sebastian/Library/Fonts/Arial Unicode.ttf')\
.generate(wl_space_split)
image_colors = ImageColorGenerator(alice_coloring)
plt.imshow(my_wordcloud.recolor(color_func=image_colors))
plt.imshow(my_wordcloud)
plt.axis("off")
plt.show()
# 保存图片 并发送到手机
my_wordcloud.to_file(os.path.join(d, "wechat_cloud.png"))
itchat.send_image("wechat_cloud.png", 'filehelper')
嗯~好像还可以,这是Mac下生成的,附一个win10下生成的
3. 微信自动回复
接着来实现一个类似qq上的自动回复,原理就是接收到消息,就发消息回去,同时发一条给文件助手,就可以在文件助手中统一查看消息。
代码很简单,来看看
#coding=utf8
import itchat
# 自动回复
# 封装好的装饰器,当接收到的消息是Text,即文字消息
@itchat.msg_register('Text')
def text_reply(msg):
# 当消息不是由自己发出的时候
if not msg['FromUserName'] == myUserName:
# 发送一条提示给文件助手
itchat.send_msg(u"[%s]收到好友@%s的信息:%s\n" %
(time.strftime("%Y-%m-%d%H:%M:%S", time.localtime(msg['CreateTime'])),
msg['User']['NickName'],
msg['Text']), 'filehelper')
# 回复给好友
return u'[自动回复]您好,我现在有事不在,一会再和您联系。\n已经收到您的的信息:%s\n' % (msg['Text'])
if __name__ == '__main__':
itchat.auto_login()
# 获取自己的UserName
myUserName = itchat.get_friends(update=True)[0]["UserName"]
itchat.run()
运行后会保持登录状态,开启自动回复模式,手机上查看:
当然,除了文字Text信息,还可以接收图片(表情包算图片),语音,名片,地理位置,分享和类型为Note的信息(就是有人提示类的消息,例如撤回消息),把装饰器写成下面形式即可接受,大家可以试试
@itchat.msg_register(['Map', 'Card', 'Note', 'Sharing', 'Picture'])
4. 最后
除了上面这些,还可以做到管理微信群,自动添加好友,还可以加入机器人回复功能,有时间会补上。
python训练营微信广告_当Python遇上微信,可以这么玩相关推荐
- python登录微信客户端_命令行下的微信客户端
_____ _ _ _____ _ _ ___ _____ |_ _| | | / __ \| | | | / _ \_ _| | | | | | | / \/| |_| |/ /_\ \| | | ...
- python无法打开微信登录_如何让你的微信登录界面地球转起来(利用python实现)...
让微信地球转起来(python实现) 微信地球 手机重启后打开微信的一瞬间,会看到一幅有名的图片. 大概是站在月亮上看地球的效果.你有没有想过,如果上面那个地球转起来会是怎样? 效果图 素材 这里有两 ...
- python调用微信客户端_用Python编写的简化版微信客户端
原标题:用Python编写的简化版微信客户端 原文:A simple WeChat client written in Python supports session persistence. 翻译: ...
- python朋友圈头像_用python一键生成头像墙,将你微信好友头像全部收集起来
本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理 以下文章来源于腾讯云 作者:Python编程与实战 ( 想要学习Python?Py ...
- python自动发微信新闻网_用python自制微信机器人,定时发送天气预报
0 引言 前段时间找到了一个免费的天气预报API,费了好段时间把这个API解析并组装成自己想用的格式了,就想着如何实现每天发送天气信息给自己.最近无意中发现了wxpy库,用它来做再合适不过了.以下是w ...
- python之禅 中文_《Python之禅》中对于Python编程过程中的一些建议
<Python之禅>中对于Python编程过程中的一些建议 来源:中文源码网 浏览: 次 日期:2018年9月2日 [下载文档: <Python之禅>中对于Pyt ...
- python跟谁学_学 Python 都用来干嘛的?
可以拿来了解女朋友情绪变化,顺道自动回复. 还能一键扣图,让开淘宝店的设计师下岗,在一旁痛哭流涕-- 提示:关注微信公众号 [七月在线实验室],让自己变得更强!在公众号内发"ZH" ...
- python大数据免费_用python做大数据
不学Python迟早会被淘汰?Python真有这么好的前景? 最近几年Python编程语言在国内引起不小的轰动,有超越Java之势,本来在美国这个编程语言就是最火的,应用的非常非常的广泛,而Pytho ...
- python人脸识别库_基于Python的face_recognition库实现人脸识别
Python Python开发 Python语言 基于Python的face_recognition库实现人脸识别 一.face_recognition库简介 face_recognition是Pyt ...
最新文章
- golang的GUI库,使用go-fyne设计一个代办事项APP
- PAT 甲级 1027 Colors in Mars
- LaText中插入带上下限的求和符号
- tftp刷路由器 linux,TP-Link无线路由器HTTP/TFTP后门漏洞
- 爱奇艺大数据生态的实时化建设
- 实验干货分享:用Go语言实现分布式缓存开发之map
- 今天换了ubuntu10.04
- 发布dotNetCore程序到Kubernetes
- 算法中的算子是什么意思,图像处理一样理解
- 10许可证即将到期_食品经营许可证延续
- php+mysql实例注入,PHP+MYSQL注入实例与防范措施总结
- 银河麒麟服务器操作系统V10SP2安装虚拟化管理软件
- django上云步骤
- php怎么转mp4,php使用memcoder将视频转成mp4格式的方法
- verilog HDLBits Verilog语法
- 利用Matlab实现Mann-Kendall(MK)突变检验函数
- 怎么做UI全栈设计师 UI怎么学习比较好
- 华米科技举办首届AI创新大会 发布“黄山2号”可穿戴芯片
- 【C语言】编写一个程序,当输入小写字母a,输出大写字母Z,当输入小写字母b,输出大写字母Y,以此类推,当输入小写字母z,输出大写字母A。
- 【Proteus仿真】LCD1602+DS1307按键设置简易时钟