最近较忙无时间写Python和Django的文章,先转载些有趣易读的文章推荐给大家。itchat是个非常有趣的库,你可以利用它获取统计微信好友信息,给好友程序性地发送信息和文件(比如定时或设置自动回复),还可以通过它实现微信对电脑的操控。网上有很多关于itchat的文章,下文是小编我认为值得收藏的。原文作者wangzhy。

-----------------------------------------------------------------------------

最近研究了一些微信的玩法,我们可以通过网页版的微信微信网页版,扫码登录后去抓包爬取信息,还可以post去发送信息。然后发现了itchat这个开源项目,作者是@LittleCoder,已经把微信的接口完成了,大大的方便了我们对微信的挖掘,以下的功能也通过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)

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-8import 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 jiebapip install wordcloud

代码

# coding:utf-8import itchatimport 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 jiebawordlist_jieba = jieba.cut(text, cut_all=True)wl_space_split = " ".join(wordlist_jieba)

# wordcloud词云import matplotlib.pyplot as pltfrom wordcloud import WordCloudimport 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用法,我可以找一张图来生成配色方,修改一下代码。

# wordcloud词云import matplotlib.pyplot as pltfrom wordcloud import WordCloud, ImageColorGeneratorimport osimport numpy as npimport 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=utf8import 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. 发送本地文件给微信好友

如果要给某个好友发送本地文件,可以使用send方法实现,无需使用装饰器。如果toUserName为空,会将相关信息发送给自己。
send(msg="Text Message", toUserName=None)参数:

msg : 文本消息内容@fil@path_to_file : 发送文件@img@path_to_img : 发送图片@vid@path_to_video : 发送视频toUserName : 发送对象, 如果留空, 将发送给自己.返回值True or False

代码展示:目的是看下他们的格式mport itchatitchat.auto_login()itchat.send("Hello World!")ithcat.send("@fil@%s" % '/Users/locolName/Desktop/.text')ithcat.send("@img@%s" % '/Users/locolName/Desktop/test.png')ithcat.send("@vid@%s" % '/Users/locolName/Desktop/test.mkv')
更多有趣项目:Django实战: Python爬取链家上海二手房信息,存入数据库并在前端显示

Django应用实战: 编写你自己的PDF编辑器, 实现PDF页面提取, 页面合并与替换。

Python爬虫从入门到精通(3): BeautifulSoup用法总结及多线程爬虫爬取糗事百科

如何使用Python itchat库玩转微信, 统计好友信息, 设置自动回复和发送本地文件...相关推荐

  1. 小猪的Python学习之旅 —— 19.Python微信自动好友验证,自动回复,发送群聊链接

    小猪的Python学习之旅 -- 19.Python微信自动好友验证,自动回复,发送群聊链接 标签:Python 一句话概括本文: 上一节利用itchat这个库,做了小宇宙早报的监测与转发, 本节新增 ...

  2. Python微信自动好友验证,自动回复,发送群聊链接

    引言: 一开始二维码加群,但是呢,这个东西隔一段时间会过期,我需要 每隔一段时间去更新二维码,然后当群人数超过100人了,只能邀请进群, 这个时候就需要别人添加我为好友,然后我通过,打开交流群,添加成 ...

  3. python爬微信头像_使用python itchat包爬取微信好友头像形成矩形头像集的方法

    初学python,我们必须干点有意思的事!从微信下手吧! 头像集样例如下: 大家可以发朋友圈开启辨认大赛哈哈~ 话不多说,直接上代码,注释我写了比较多,大家应该能看懂 import itchat im ...

  4. python爬取微信好友头像_使用python itchat包爬取微信好友头像形成矩形头像集的方法...

    初学python,我们必须干点有意思的事!从微信下手吧! 头像集样例如下: 大家可以发朋友圈开启辨认大赛哈哈~ 话不多说,直接上代码,注释我写了比较多,大家应该能看懂 import itchat im ...

  5. python爬取微信朋友圈图片_使用python itchat包爬取微信好友头像形成矩形头像集的方法...

    初学python,我们必须干点有意思的事!从微信下手吧! 头像集样例如下: 大家可以发朋友圈开启辨认大赛哈哈~ 话不多说,直接上代码,注释我写了比较多,大家应该能看懂 import itchat im ...

  6. 电脑企业微信怎么发送本地文件给微信好友?

    电脑上使用办公工具企业微信可帮助大家将个人微信的交际圈和工作时的客户区分开来,企业微信的功能和个人微信有很多类似之处,如可以发送文本聊天语言,可以传输图片,也可以发送文件等. 文章来源:电脑企业微信怎 ...

  7. 用python itchat包 爬取微信好友头像形成矩形头像集

    原创作品,转载请注明地址哈 ~ ###初学python,我们必须干点有意思的事!从微信下手吧! 头像集样例如下: 大家可以发朋友圈开启辨认大赛哈哈~ 话不多说,直接上代码,注释我写了比较多,大家应该能 ...

  8. python itchat库_用python【itchat】库获取群聊信息的正确姿势

    我在<昆明单车骑行群体分析报告(2019版)>中曾用python的itchat模块抓取了我加入的昆明单车群信息,并做了简要分析. 在持续十来天抓取群数据的时候,我发现一个奇怪现象,就是有一 ...

  9. python编程豆瓣自动回复_微信还不会设置自动回复?我用Python 3招教会你

    众所周知,QQ上面是可以设置自动回复的,但是微信上面并不可以.最近在学习Python,发现Python的适用范围是真的很广,这里使用itchat组件实现微信的自动回复. 1:安装itchat pip ...

最新文章

  1. maven POM.xml 标签详解
  2. (转载)TL-WN725N V3无线网卡驱动移植与wireless工具wpa_supplicant-2.6
  3. 构建乘积数组(剑指offer)
  4. 用LINQ来对文章列表进行操作
  5. 如何在Word,Excel和PowerPoint 2010中裁剪图片
  6. 在Docker容器中的Tomcat上运行ADF Essentials
  7. unity如何让canvas总是显示在所有层的最上方?
  8. android导入导出txt通讯录,Android导入导出txt通讯录工具
  9. 4月上旬中国万网域名总量增至245.8万个 国内份额上扬
  10. 猎洞20年老兵的经验之谈
  11. Java学习之——泛型
  12. Linux下完全删除用户
  13. java实现奇偶位交换
  14. Octave与MATLAB
  15. TeamTalk消息协议
  16. 开发环境- 配置虚拟主机域名/hosts文件 - 学习/实践
  17. 【mysql】ACID靠什么保证的?
  18. 10个降低PCB成本的技巧!PCB采购必须掌握!
  19. Windows本地连接正常,上不去网的解决办法
  20. 安卓最牛教材!2021大厂Android面试经历,吐血整理

热门文章

  1. Android 自定义表格显示数据
  2. mysql路由和MAH
  3. 我打算去广东第一“鬼城”,买房安家
  4. aws认证,aws有哪些认证,有什么用
  5. HDU 6627 equation(模拟,分类讨论)
  6. 新手建站详细步骤(图文教程)
  7. 小精灵无尽的长廊_神奇宝贝之无尽系统
  8. 优漫动游平面设计的形式美
  9. css 文本三行显示,超出省略号表示
  10. 基于微信小程序的免费小说阅读平台小程序的设计与实现 毕业设计 毕设源码(1)小程序功能