1.用 Python 实现微信好友性别及位置信息统计

这里使用的python3+wxpy库+Anaconda(Spyder)开发。如果你想对wxpy有更深的了解请查看:wxpy: 用 Python 玩微信

  1. # -*- coding: utf-8 -*-
  2. """
  3. 微信好友性别及位置信息
  4. """
  5. #导入模块
  6. from wxpy import Bot
  7. '''Q
  8. 微信机器人登录有3种模式,
  9. (1)极简模式:robot = Bot()
  10. (2)终端模式:robot = Bot(console_qr=True)
  11. (3)缓存模式(可保持登录状态):robot = Bot(cache_path=True)
  12. '''
  13. #初始化机器人,选择缓存模式(扫码)登录
  14. robot = Bot(cache_path=True)
  15. #获取好友信息
  16. robot.chats()
  17. #robot.mps()#获取微信公众号信息
  18. #获取好友的统计信息
  19. Friends = robot.friends()
  20. print(Friends.stats_text())

效果图(来自笔主盆友圈):

2.用 Python 实现聊天机器人

这里使用的python3+wxpy库+Anaconda(Spyder)开发。需要提前去图灵官网创建一个属于自己的机器人然后得到apikey。

  • 使用图灵机器人自动与指定好友聊天

让室友帮忙测试发现发送表情发送文字还能回应,但是发送图片可能不会回复,猜应该是我们申请的图灵机器人是最初级的没有加图片识别功能。

  1. # -*- coding: utf-8 -*-
  2. """
  3. Created on Tue Mar 13 19:09:05 2018
  4. @author: Snailclimb
  5. @description使用图灵机器人自动与指定好友聊天
  6. """
  7. from wxpy import Bot,Tuling,embed,ensure_one
  8. bot = Bot()
  9. my_friend = ensure_one(bot.search('郑凯')) #想和机器人聊天的好友的备注
  10. tuling = Tuling(api_key='你申请的apikey')
  11. @bot.register(my_friend) # 使用图灵机器人自动与指定好友聊天
  12. def reply_my_friend(msg):
  13. tuling.do_reply(msg)
  14. embed()
  • 使用图灵机器人群聊
  1. # -*- coding: utf-8 -*-
  2. """
  3. Created on Tue Mar 13 18:55:04 2018
  4. @author: Administrator
  5. """
  6. from wxpy import Bot,Tuling,embed
  7. bot = Bot(cache_path=True)
  8. my_group = bot.groups().search('群聊名称')[0] # 记得把名字改成想用机器人的群
  9. tuling = Tuling(api_key='你申请的apikey') # 一定要添加,不然实现不了
  10. @bot.register(my_group, except_self=False) # 使用图灵机器人自动在指定群聊天
  11. def reply_my_friend(msg):
  12. print(tuling.do_reply(msg))
  13. embed()

3.用 Python分析朋友圈好友性别分布(图标展示)

这里没有使用wxpy而是换成了Itchat操作微信,itchat只需要2行代码就可以登录微信。如果你想详细了解itchat,请查看:

itchat入门进阶教程

itchat github项目地址

另外就是需要用到python的一个画图功能非常强大的第三方库:matplotlib

如果你想对matplotlib有更深的了解请查看我的博文:Python第三方库matplotlib(词云)入门与进阶

  1. # -*- coding: utf-8 -*-
  2. """
  3. Created on Tue Mar 13 17:09:26 2018
  4. @author: Snalclimb
  5. @description 微信好友性别比例
  6. """
  7. import itchat
  8. import matplotlib.pyplot as plt
  9. from collections import Counter
  10. itchat.auto_login(hotReload=True)
  11. friends = itchat.get_friends(update=True)
  12. sexs = list(map(lambda x: x['Sex'], friends[1:]))
  13. counts = list(map(lambda x: x[1], Counter(sexs).items()))
  14. labels = ['Male','FeMale', 'Unknown']
  15. colors = ['red', 'yellowgreen', 'lightskyblue']
  16. plt.figure(figsize=(8, 5), dpi=80)
  17. plt.axes(aspect=1)
  18. plt.pie(counts, # 性别统计结果
  19. labels=labels, # 性别展示标签
  20. colors=colors, # 饼图区域配色
  21. labeldistance=1.1, # 标签距离圆点距离
  22. autopct='%3.1f%%', # 饼图区域文本格式
  23. shadow=False, # 饼图是否显示阴影
  24. startangle=90, # 饼图起始角度
  25. pctdistance=0.6 # 饼图区域文本距离圆点距离
  26. )
  27. plt.legend(loc='upper right',)
  28. plt.title('%s的微信好友性别组成' % friends[0]['NickName'])
  29. plt.show()

效果图(来自笔主盆友圈):

4.用 Python分析朋友圈好友的签名

需要用到的第三方库:

numpy:本例结合wordcloud使用

jieba对中文惊进行分词

PIL: 对图像进行处理(本例与wordcloud结合使用)

snowlp对文本信息进行情感判断

wordcloud生成词云

matplotlib:绘制2D图形

  1. # -*- coding: utf-8 -*-
  2. """
  3. 朋友圈朋友签名的词云生成以及
  4. 签名情感分析
  5. """
  6. import re,jieba,itchat
  7. import jieba.analyse
  8. import numpy as np
  9. from PIL import Image
  10. from snownlp import SnowNLP
  11. from wordcloud import WordCloud
  12. import matplotlib.pyplot as plt
  13. itchat.auto_login(hotReload=True)
  14. friends = itchat.get_friends(update=True)
  15. def analyseSignature(friends):
  16. signatures = ''
  17. emotions = []
  18. for friend in friends:
  19. signature = friend['Signature']
  20. if(signature != None):
  21. signature = signature.strip().replace('span', '').replace('class', '').replace('emoji', '')
  22. signature = re.sub(r'1f(\d.+)','',signature)
  23. if(len(signature)>0):
  24. nlp = SnowNLP(signature)
  25. emotions.append(nlp.sentiments)
  26. signatures += ' '.join(jieba.analyse.extract_tags(signature,5))
  27. with open('signatures.txt','wt',encoding='utf-8') as file:
  28. file.write(signatures)
  29. # 朋友圈朋友签名的词云相关属性设置
  30. back_coloring = np.array(Image.open('alice_color.png'))
  31. wordcloud = WordCloud(
  32. font_path='simfang.ttf',
  33. background_color="white",
  34. max_words=1200,
  35. mask=back_coloring,
  36. max_font_size=75,
  37. random_state=45,
  38. width=1250,
  39. height=1000,
  40. margin=15
  41. )
  42. #生成朋友圈朋友签名的词云
  43. wordcloud.generate(signatures)
  44. plt.imshow(wordcloud)
  45. plt.axis("off")
  46. plt.show()
  47. wordcloud.to_file('signatures.jpg')#保存到本地文件
  48. # Signature Emotional Judgment
  49. count_good = len(list(filter(lambda x:x>0.66,emotions)))#正面积极
  50. count_normal = len(list(filter(lambda x:x>=0.33 and x<=0.66,emotions)))#中性
  51. count_bad = len(list(filter(lambda x:x<0.33,emotions)))#负面消极
  52. labels = [u'负面消极',u'中性',u'正面积极']
  53. values = (count_bad,count_normal,count_good)
  54. plt.rcParams['font.sans-serif'] = ['simHei']
  55. plt.rcParams['axes.unicode_minus'] = False
  56. plt.xlabel(u'情感判断')#x
  57. plt.ylabel(u'频数')#y
  58. plt.xticks(range(3),labels)
  59. plt.legend(loc='upper right',)
  60. plt.bar(range(3), values, color = 'rgb')
  61. plt.title(u'%s的微信好友签名信息情感分析' % friends[0]['NickName'])
  62. plt.show()
  63. analyseSignature(friends)

效果图(来自笔主盆友圈):

github项目地址(系列文章包含常见第三库的使用与爬虫,会持续更新)

欢迎star和fork.

如果你觉得博主的文章不错,欢迎转发点赞。你能从中学到知识就是我最大的幸运。

欢迎关注我的微信公众号:“Java面试通关手册”(分享各种Java学习资源,面试题,以及企业级Java实战项目回复关键字免费领取):

用python玩微信(聊天机器人,好友信息统计)的更多相关文章

  1. 手把手教你用Python代码实现微信聊天机器人 -- Python wxpy

    关注我,每天都有优质技术文章推送,工作,学习累了的时候放松一下自己. 本篇文章同步微信公众号 欢迎大家关注我的微信公众号:「醉翁猫咪」 来学习了,微信聊天机器人. 环境要求: Windows / Li ...

  2. python实现微信自动回复机器人

    一 简单介绍 wxpy基于itchat,使用了 Web 微信的通讯协议,,通过大量接口优化提升了模块的易用性,并进行丰富的功能扩展.实现了微信登录.收发消息.搜索好友.数据统计等功能. 总而言之,可用 ...

  3. 使用图灵机器人api搭建微信聊天机器人php实现

    之前通过hook技术实现了微信pc端发送消息功能,如果在结合图灵机器人就能实现微信聊天机器人. 代码下载:http://blog.yshizi.cn/131.html 逻辑如下: 下面我简单介绍一下步 ...

  4. 【Python撩妹合集】微信聊天机器人,推送天气早报、睡前故事、精美图片分享

    福利时间,福利时间,福利时间 如果你还在为不知道怎么撩妹而烦恼,不知道怎么勾搭小仙女而困惑,又或者不知道怎么讨女朋友欢心而长吁短叹. 那么不要犹豫徘徊,往下看.接下来我会分享怎么使用 Python 实 ...

  5. wxpy: 用 Python 玩微信【转】

    转自:https://wxpy.readthedocs.io/zh/latest/index.html 微信机器人 / 可能是最优雅的微信个人号 API wxpy 在 itchat 的基础上,通过大量 ...

  6. SAP成都研究院飞机哥: SAP C4C中国本地化之微信聊天机器人的集成

    今天的文章仍然来自Jerry的老同事,SAP成都研究院的张航(Zhang Harry).关于他的背景介绍,请参考张航之前的文章:SAP成都研究院飞机哥:程序猿和飞机的不解之缘.下面是他的正文. 大家好 ...

  7. python微信聊天机器人改进版,定时或触发抓取天气预报、励志语录等,向好友推送

    最近想着做一个微信机器人,主要想要实现能够每天定时推送天气预报或励志语录,励志语录要每天有自动更新,定时或当有好友回复时,能够随机推送不同的内容.于是开始了分析思路.博主是采用了多线程群发,因为微信对 ...

  8. 用Python玩微信(非常详细)

    代码放在这里:wzyonggege/python-wechat-itchat 词云那里可以换成小黄人图片 ----------------------------------------------- ...

  9. 10分钟教你用Python打造微信天气预报机器人

    01 前言 最近武汉的天气越来越恶劣了.动不动就下雨,所以,拥有一款好的天气预报工具,对于我们大学生来说,还真是挺重要的了.好了,自己动手,丰衣足食,我们来用Python打造一个天气预报的微信机器人吧 ...

随机推荐

  1. activity属性设置大全

    activity属性设置大全 android:allowTaskReparenting=["true" | "false"]         是否允许activ ...

  2. Python文件操作:同一个文件进行内容替换

    在原文件上进行部分内容的替换,主要用到seek()函数和truncate()函数实现,直接上代码: ) # 将指针位置指到文件开头(注意:一定要有这步操作,不然无法清空文件)f1.truncate() ...

  3. table中的td限制宽度width也不能让字符过长变成省略号生效?

    table中的td限制宽度width也不能让字符过长变成省略号生效? http://blog.csdn.net/java_mr_zheng/article/details/49423247 CSS t ...

  4. Qt信号与槽机制

    一.信号和槽机制 信号和槽用于两个对象之间的通信,信号和槽机制是Qt的核心特征,也是Qt不同于其他开发框架的最突出的特征.在GUI编程中,当改变了一个部件时,总希望其他部件也能了解到该变化.更一般来说 ...

  5. 【bzoj4579】[Usaco2016 Open]Closing the Farm 并查集

    题目描述 Farmer John and his cows are planning to leave town for a long vacation, and so FJ wants to tem ...

  6. 【bzoj1901】Zju2112 Dynamic Rankings 离散化+主席树+树状数组

    题目描述 给定一个含有n个数的序列a[1],a[2],a[3]……a[n],程序必须回答这样的询问:对于给定的i,j,k,在a[i],a[i+1],a[i+2]……a[j]中第k小的数是多少(1≤k≤ ...

  7. hdu 2050 折线分割平面 (递推)

    折线分割平面 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Subm ...

  8. c# 日志记录 行号

    Console.WriteLine(ex.Message); //通过如下代码来记录异常详细的信息 ); Console.WriteLine("文件名:{0},行号:{1},列号:{2}&q ...

  9. BZOJ3123:[SDOI2013]森林——题解

    http://www.lydsy.com/JudgeOnline/problem.php?id=3123 https://www.luogu.org/problemnew/show/P3302 树上主 ...

  10. Linux用户、用户组权限管理详解 --- 02

    2,用户.用户组管理操作详解: 2.1 adduser 添加用户: adduser [-u uid][-g group][-d home][-s shell] -u:直接给出userID        ...