初出茅庐-----微信好友分析与微信机器人

一、微信好友分析

1.简介

对微信的好友进行分析,统计好友的人数,省市的分布,并排序,并统计好友签名用词的特点。用pyechart图像显示,并存为网页文件。

2.函数描述

函数 描述
get_friends_info(self) 获取好像信息,返回lis列表
friends_info_lis_to_excle(self) 把lis信息写入到excle
extract_data_as_two_lis(self, condition) 参数为condition 词频,提取两个列表,condition 和 人数,降序列表
city_wordcloud(self, save_name, condition) 参数为 save_name 自动添加jpg 创建X条件词云
 pillar_picture(self, condition, render_name) 参数为condition ,创建柱形html图片
map_picture(self, condition, picture_name, keylist, valueslist, Map_condition) 参数为condition,picture_name, keylist, valueslist, Map_condition->china或者广东创建html地图图片,图片名字为picture_name
map_visualmap() -> Map 创建地图
find_friends_in_condition(self, condition) 参数为condition,返回一个二维列表

注意:有些人的电脑无法安装wordcloud库,一下是安装的教程

方法1

在此网页课找到库的安装包https://www.lfd.uci.edu/~gohlke/pythonlibs/#wordcloud,然后下载你所需要的库的安装包(一定要找准适合自己电脑的)

找到安装包的路径

然后在上面输入cmd,进入命令行,输入pip install +你下载的库的文件名

等待他自动下载成功即可

方法2

如果不想这么麻烦,可以下载anaconda,在anaconda中直接下载wordcloud库,然后在Spyder里可以直接使用这个库

3.代码实现

1 from wxpy import *
2 from wordcloud importWordCloud3 importnumpy as np4 from PIL importImage5 importmatplotlib.pyplot as plt6 from pandas importread_excel7 importpandas as pd8
9 classwechat_test():10
11     def __init__(self, filename, sheetname):12         self.filename =filename13         self.sheetname =sheetname14
15     def get_friends_info(self): #获取好像信息,返回lis列表
16         bot =Bot()17         lis = [['name', 'real_name', 'sex', 'city', 'province']]  #把信息存储为一个二维列表,添加头部信息
18         friend_all =bot.friends()19
20         for a_friend infriend_all:21             NickName = a_friend.raw.get('NickName', None) #获取所有好友信息 raw表示获取全部信息
22             RemarkName = a_friend.raw.get('RemarkName', None)23             Sex = {1: "", 2: "", 0: "其他"}.get(a_friend.raw.get('Sex', None), None)24             City = a_friend.raw.get('City', None)25             Province = a_friend.raw.get('Province', None)26             Signature = a_friend.raw.get('Signature', None)27             #HeadImgUrl = a_friend.raw.get('HeadImgUrl', None)
28             #HeadImgFlag = a_friend.raw.get('HeadImgFlag', None)
29             list_0 =[NickName, RemarkName, Sex, City, Province, Signature]30 lis.append(list_0)31         returnlis32
33     #把lis信息写入到excle
34     deffriends_info_lis_to_excle(self):35         importopenpyxl36         lis =self.get_friends_info()37         wb =openpyxl.Workbook()38         sheet =wb.active39         sheet.title =self.sheetname40         for i inrange(0, len(lis)):41             for j inrange(0, len(lis[i])):42                 sheet.cell(row=i+1, column=j+1, value=str(lis[i][j]))43 wb.save(self.filename)44         print("excel保存成功")45
46     #参数为condition 词频,提取两个列表,condition 和 人数,降序列表
47     defextract_data_as_two_lis(self, condition):48         df = read_excel(self.filename, sheet_name=self.sheetname)49         X_list = df[condition].fillna('0').tolist()  #把列转换为list,用0替换Nan?
50         counts = {}  #创建字典
51         for word inX_list:52             counts[word] = counts.get(word, 0) + 1  #统计词频
53         items = list(counts.items())  #返回所有键值对
54         items.sort(key=lambda x: x[1], reverse=True)  #降序排序
55         keylist =list()56         valueslist =list()57         for item initems:58             word, count =item59             #if word == '0':
60                 #word = "其他"
61             keylist.append(word)  #把词语降序word放进一个列表
62 valueslist.append(count)63         returnkeylist, valueslist64
65     #参数为 save_name 自动添加jpg 创建X条件词云,
66     defcity_wordcloud(self, save_name, condition):67         wordlist, giveup =self.extract_data_as_two_lis(condition)68         new_wordlist =list()69         for i in range(25):70 new_wordlist.append(wordlist[i])71         wl = ' '.join(wordlist)  #把列表转换成str wl为str类型,所以需要转换
72         cloud_mask = np.array(Image.open("love.jpg"))  #词云的背景图,需要颜色区分度高
73         wc =WordCloud(74             background_color="black",  #背景颜色
75             mask=cloud_mask,  #背景图cloud_mask
76             max_words=100,  #最大词语数目
77             font_path='msyh.ttc',  #调用font里的simsun.tff字体,需要提前安装
78             height=500,  #设置高度
79             width=2600,  #设置宽度
80             max_font_size=1000,  #最大字体号
81             random_state=1000,  #设置随机生成状态,即有多少种配色方案
82 )83         myword = wc.generate(wl)  #用 wl的词语 生成词云
84         #展示词云图
85 plt.imshow(myword)86         plt.axis("off")87         #plt.show()
88         try:89             wc.to_file(save_name + '.jpg')  #把词云保存下当前目录(与此py文件目录相同)
90         except:91             print("词云保存失败")92
93     #参数为condition ,创建柱形html图片,
94     defpillar_picture(self, condition, render_name):95         from pyecharts.charts importBar96         from pyecharts.globals importThemeType97         from pyecharts importoptions as opts98
99         keylist, valueslist =self.extract_data_as_two_lis(condition)100         new_keylist =list()101         new_valueslist =list()102         for i in range(10):103 new_keylist.append(keylist[i])104 new_valueslist.append(valueslist[i])105         bar = Bar(init_opts=opts.InitOpts(theme=ThemeType.LIGHT))106         #x轴 列表
107 bar.add_xaxis(new_keylist)108         bar.add_yaxis("好友分布", new_valueslist)109         #render 会生成本地 HTML 文件,默认会在当前目录生成 render.html 文件
110         #也可以传入路径参数,如 bar.render("mycharts.html")
111 bar.render(render_name)112         print("pillar_picture图片保存成功!")113
114     #参数为condition,picture_name, keylist, valueslist, Map_condition->china或者广东创建html地图图片,图片名字为picture_name
115     defmap_picture(self, condition, picture_name, keylist, valueslist, Map_condition):116         from pyecharts importoptions as opts117         from pyecharts.charts importMap118
119         def map_visualmap() ->Map:120             new_keylist =list()121             new_valueslist =list()122             if condition == 'city':123                 for i inrange(len(keylist)):124                     #列表处理,默认elsx里面的city没有'市'字,地图需要市字
125                     new_keylist.append(keylist[i] + '')126 new_valueslist.append(valueslist[i])127             else:128                 for i inrange(len(keylist)):129 new_keylist.append(keylist[i])130 new_valueslist.append(valueslist[i])131
132             c =(133 Map()134                     .add("好友地图分布", [list(z) for z inzip(new_keylist, new_valueslist)], Map_condition)135 .set_global_opts(136                     title_opts=opts.TitleOpts(title="Map-VisualMap"),137                     visualmap_opts=opts.VisualMapOpts(max_=100),138 )139 )140             try:141 c.render(picture_name)142             except:143                 print("html地图图片创建失败")144             print('html地图图片保存成功')145         map_visualmap()#调用自己
146
147     #参数为condition,返回一个二维列表
148     deffind_friends_in_condition(self, condition):149         df = pd.read_excel(self.filename, usecols=[0, 1, 3], names=None)  #不要列名
150         df_li =df.values.tolist()151         name =list()152         for data indf_li:153             condition =condition154             if condition indata:155 name.append(data)156 self.map_picture()157         #print(len(name), name)
158         returnname159
160
161 if __name__ == "__main__":162     wechat = wechat_test('wechat_info.xlsx', 'list')163 wechat.friends_info_lis_to_excle()164     wechat.city_wordcloud('city_wordclour', 'city')165     wechat.pillar_picture('city', 'render.html')166     keylist, valueslist = wechat.extract_data_as_two_lis('city')167     wechat.map_picture('city', 'test.html', keylist, valueslist, "广东")168     #wechat.find_friends_in_city()

4.结果如图所示

词云

地图

Excel表格

二、微信聊天机器人

简介:此代码可实现话痨机器人,微智能聊天机器人,自动回复,获取聊天记录

代码实现

1 from wxpy import *
2 importrequests3 importjson4 #初始化机器人,扫码登陆
5 robot =Bot()6 def talk_robot(info='你好啊'):   #定义一个默认参数
7     api_url = 'http://www.tuling123.com/openapi/api'  #图灵接口url
8     apikey = '99652f74e6f54189a4d8b2d4df815ba4'       #注册图灵生成key
9     data = {'key': apikey, 'info': info}10     r = requests.post(api_url, data=data).text11     response=json.loads(r)['text']12     returnresponse13
14 '''@robot.register()#微智能机器人15 def reply_my_friend(msg):16 message = '{}'.format(msg.text)17 response = talk_robot(info=message)18 return response19 embed()20
21 @robot.register()#话痨机器人22 def print_group_msg(msg):23 if msg.is_at:24 message = '{}'.format(msg.text)25 response = talk_robot(info=message)26 return response27 embed()28 '''
29 @robot.register(Group,TEXT)#自动回复
30 defprint_group_msg(msg):31     msg.reply("本人不在线")32     print(msg)33 msg.member#窃取聊天记录34     msg_id=msg.id35     print(msg_id)36     msg_id_regex=re.compile('<msgid>(\d+)</msgid>')37     old_msg_id=msg_id_regex.findall(raw.get('Content'))[0]38     print(old_msg_id)39 embed()

结果如图所示

转载于:https://www.cnblogs.com/xiayiLL/p/10983061.html

初出茅庐-----微信好友分析与微信机器人相关推荐

  1. 真小白|一步步教你用Python抓取微信好友分析

    前言 前段时间公司里有个同事发了张图片在群上,是他所有微信好友头像拼成的一张大图,我看着挺有意思,就想自己也搞一下,然后百度了下怎么抓取微信好友之类的--一搜全是用Python抓取的,之前就听说过Py ...

  2. python 实现微信好友分析

    文章目录 wechat analsys 环境搭建 实现的功能 微信好友信息导出 微信好友性别分析 微信好友城市分布 微信好友地图分布 微信好友个性签名情感分析 微信好友头像照片墙 是否识好友识别 自动 ...

  3. itchat+pyecharts实现微信好友分析及可视化

    python+pyecharts实现微信好友分析及可视化 1. 准备及介绍 2. itchat获取微信好友列表 3. 分词及生成词云 3.1 jieba分词 3.2 生成词云 4. pyecharts ...

  4. android隐藏微信好友,如何使用微信隐藏的恢复小技巧?微信好友恢复!

    原标题:如何使用微信隐藏的恢复小技巧?微信好友恢复! 微信在很多人的工作中发挥了重要的作用的,也大大提升了我们的工作效率.微信大大方便了好友.同事间的沟通.然而在布置情下被删了微信好友怎么找回来呢? ...

  5. python爬虫能爬取微信密码吗_如何利用Python网络爬虫抓取微信好友数量以及微信好友的男女比例...

    今天我们继续focus on微信,不过这次给大家带来的是利用Python网络爬虫抓取微信好友总数量和微信好友男女性别的分布情况.代码实现蛮简单的,具体的教程如下. 相信大家都知道,直接通过网页抓取微信 ...

  6. python excel 微信_Python Excel微信数据转换 分析提取微信零钱数据

    微信数据转换 分析提取微信零钱数据 # 微信数据转换 def wxProcessDo(total_list, begin, companyName, accountingTitle): # 期初22. ...

  7. 原创|Python wxpy模块的有趣应用,微信机器人,微信好友分析搞定

    ↑↑↑关注后"星标"简说Python 人人都可以简单入门Python.爬虫.数据分析 简说Python推荐 来源:简说Python作者:老表 大家好,我是老表,今天这篇文章是两年半 ...

  8. 我的第一个微信好友分析

    一.使用到的库 ① wxpy:初始化微信机器人 ② openpyxl:保存微信好友数据为Excel表格 ③ pyecharts:生成可视化的地图 ④ wordcloud.matplotlib.jieb ...

  9. python微信好友分析_基于python实现微信好友数据分析(简单)

    一.功能介绍 本文主要介绍利用网页端微信获取数据,实现个人微信好友数据的获取,并进行一些简单的数据分析,功能包括: 1.爬取好友列表,显示好友昵称.性别和地域和签名, 文件保存为 xlsx 格式 2. ...

最新文章

  1. Java学习总结:42(字节流和字符流)
  2. 003_隐藏和显示效果
  3. pythonsklearn乳腺癌数据集_使用sklearn的样本数据集
  4. java接口配置文件_Java读取property配置文件,另接口的配置
  5. YFIOServer 后台IO接口使用说明
  6. codeforces:812(div2):总结
  7. RegularExpressionValidator 常用
  8. 一个简单的基于socket的通讯处理程序
  9. fast-json.jar的用法
  10. DataTemplate——数据模板的一个典型例子
  11. MSMS探针卡市场现状及未来发展趋势
  12. phpcms v9 开发笔记
  13. 蜂鸟数据Trochil:论述制定策略的两种主要方法:市场假设和瑞士法郎案例研究-构建更好的策略1
  14. 任务管理器显示命令行
  15. 从裁员到扩招/从自研到生态,汽车行业新年新气象
  16. PS快速制作流血火焰和冰封字体
  17. Redis---初识redis
  18. 游戏引擎与游戏引擎开发入门
  19. 2022-06-09 分析Android11 Settings里面电池信息获取流程,在里面添加显示电池温度的功能。
  20. Greenplum简介

热门文章

  1. Day25 LeetCode 216. 组合总和 III 17. 电话号码的字母组合
  2. 【自然语言处理(NLP)】基于FNN网络的电影评论情感分析
  3. 新手必看--test link使用步骤
  4. 上海波涛装饰集团有限公司乐山分公司
  5. go结构体初始化_浅谈golang结构体偷懒初始化
  6. python遥控汽车玩具_分享 | 撞坏遥控车后,有个技术大牛爸爸是种怎样的体验
  7. kettle6.0 连接oracle11g,Kettle表输出报关闭的连接问题的解决方法
  8. 13:求圆的周长和面积
  9. 逆向破解之160个CrackMe —— 023-024
  10. 快速将PDF转换为图片:使用在线转换器的步骤