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

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

一、微信好友分析

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,返回一个二维列表

3.代码实现

  1 from wxpy import *
  2 from wordcloud import WordCloud
  3 import numpy as np
  4 from PIL import Image
  5 import matplotlib.pyplot as plt
  6 from pandas import read_excel
  7 import pandas as pd
  8
  9 class  wechat_test():
 10
 11     def __init__(self, filename, sheetname):
 12         self.filename = filename
 13         self.sheetname = sheetname
 14
 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 in friend_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         return lis
 32
 33     # 把lis信息写入到excle
 34     def friends_info_lis_to_excle(self):
 35         import openpyxl
 36         lis = self.get_friends_info()
 37         wb = openpyxl.Workbook()
 38         sheet = wb.active
 39         sheet.title = self.sheetname
 40         for i in range(0, len(lis)):
 41             for j in range(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     def extract_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 in X_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 in items:
 58             word, count = item
 59             #if word == ‘0‘:
 60                 #word = "其他"
 61             keylist.append(word)  # 把词语降序word放进一个列表
 62             valueslist.append(count)
 63         return keylist, valueslist
 64
 65     #参数为 save_name 自动添加jpg 创建X条件词云,
 66     def city_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     def pillar_picture(self, condition, render_name):
 95         from pyecharts.charts import Bar
 96         from pyecharts.globals import ThemeType
 97         from pyecharts import options as opts
 98
 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     def map_picture(self, condition, picture_name, keylist, valueslist, Map_condition):
116         from pyecharts import options as opts
117         from pyecharts.charts import Map
118
119         def map_visualmap() -> Map:
120             new_keylist = list()
121             new_valueslist = list()
122             if condition == ‘city‘:
123                 for i in range(len(keylist)):
124                     # 列表处理,默认elsx里面的city没有‘市‘字,地图需要市字
125                     new_keylist.append(keylist[i] + ‘市‘)
126                     new_valueslist.append(valueslist[i])
127             else:
128                 for i in range(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 in zip(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     def find_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 in df_li:
153             condition = condition
154             if condition in data:
155                 name.append(data)
156         self.map_picture()
157         #print(len(name), name)
158         return name
159
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.结果如图所示

原文地址:https://www.cnblogs.com/xiayiLL/p/10983061.html

时间: 2024-10-12 16:58:26

初出茅庐-----微信好友分析与微信机器人的相关文章

使用 python 进行微信好友分析

使用 python 进行微信好友分析 1. 使用到的库 ① wxpy:初始化微信机器人 ② openpyxl:保存微信好友数据为Excel表格 ③ pyecharts:生成可视化的地图 ④ wordcloud.matplotlib.jieba:生成词云图 [特别提醒]:pyecharts 库用的是0.5.x版本,而在 pip 中安装的为1.x.x版本,因此需要自行到[官网]中下载. 2. 基本功能 ① 分析微信好友数据 ② 生成词云图 ③ 生成地图展示 3. 代码实现 此处使用类来实现 (1)

如何利用Python网络爬虫抓取微信好友数量以及微信好友的男女比例

前几天给大家分享了利用Python网络爬虫抓取微信朋友圈的动态(上)和利用Python网络爬虫爬取微信朋友圈动态--附代码(下),并且对抓取到的数据进行了Python词云和wordart可视化,感兴趣的伙伴可以戳这篇文章:利用Python词云和wordart可视化工具对朋友圈数据进行可视化. 今天我们继续focus on微信,不过这次给大家带来的是利用Python网络爬虫抓取微信好友总数量和微信好友男女性别的分布情况.代码实现蛮简单的,具体的教程如下. 相信大家都知道,直接通过网页抓取微信的数据

练习:微信好友分析

来源:http://www.cnblogs.com/jiaoyu121/p/6944398.html 1.好友性别分布 import itchat itchat.login() #itchat.send(u'你好','filehelper') friends = itchat.get_friends(update=True)[0:] #print len(friends) male = female = other = 0 for i in friends[1:]: sex = i['Sex']

apiCloud 三方分享,微信好友分享,微信朋友圈分享,QQ分享,微博分享

首先查看我的这篇有关三方登录的博客,地址是http://www.cnblogs.com/gqx-html/p/8303567.html,配置完三方数据后可以从上一篇文章中的链接跳转到各个登录查看api,也可以看下面 微信好友分享:https://docs.apicloud.com/Client-API/Open-SDK/wx 微信朋友圈分享:https://docs.apicloud.com/Client-API/Open-SDK/wx QQ分享:https://docs.apicloud.co

我的第一个微信好友分析

1.Pillow PIL:Python Imaging Library,已经是 Python 平台事实上的图像处理标准库.PIL功能非常强大,但API却非常简单易用. 如果安装了Anaconda,Pillow就已经可用了.否则,需要在命令行下通过pip安装: pip install pillow 如果遇到Permission denied安装失败,请加上sudo重试. 2.Pyecharts 是一个用于生成 Echarts 图表的类库.Echarts 是百度开源的一个数据可视化 JS 库.用 E

分析微信好友列表信息(json)

在前面我们玩了好多静态的 HTML,但还有一些常见的动态数据,比如,商品的评论数据.实时的直播弹幕等,这些数据是会经常发生改变的,所以很多网站就会用到 Json 来传输这些数据. Python JSON 可以用 json 模块, 1. 将 python 对象转化为 json是这样的 json.dumps() 2. 将json数据转化为python对象是这样的 json.loads() 微信好友列表 登陆微信网页版(据说现在很多微信号不能等网页版了??) 很容易找到有一个请求,会返回所有好友的信息

我的第一个微信好友数据分析

本次我们利用python来分析一下我们微信的好友数据 首先安装7个依赖库 1.Pillow PIL:Python Imaging Library,已经是Python平台事实上的图像处理标准库了.PIL功能非常强大,但API却非常简单易用. 由于PIL仅支持到Python 2.7,加上年久失修,于是一群志愿者在PIL的基础上创建了兼容的版本,名字叫Pillow,支持最新Python 3.x,又加入了许多新特性,因此,我们可以直接安装使用Pillow,如果有annaconda,则直接使用即可,如无,

利用Python网络爬虫抓取微信好友的所在省位和城市分布及其可视化

前几天给大家分享了如何利用Python网络爬虫抓取微信好友数量以及微信好友的男女比例,感兴趣的小伙伴可以点击链接进行查看.今天小编给大家介绍如何利用Python网络爬虫抓取微信好友的省位和城市,并且将其进行可视化,具体的教程如下. 爬取微信好友信息,不得不提及这个itchat库,简直太神奇了,通过它访问微信好友基本信息可谓如鱼得水.下面的代码是获取微信好友的省位信息: 程序运行之后,需要扫描进行授权登录,之后在Pycharm的控制台上会出现如下图的红色提示,这些红色的字体并不是我们通常遇到的Py

利用Python网络爬虫抓取微信好友的签名及其可视化展示

前几天给大家分享了如何利用Python词云和wordart可视化工具对朋友圈数据进行可视化,利用Python网络爬虫抓取微信好友数量以及微信好友的男女比例,以及利用Python网络爬虫抓取微信好友的所在省位和城市分布及其可视化,感兴趣的小伙伴可以点击进去看看详情,内容方面不是很难,即使你是小白,也可以通过代码进行实现抓取.今天,小编继续给大家分享如何利用Python网络爬虫抓取微信好友的签名及其可视化展示,具体的教程如下所示. 1.代码实现还是基于itchat库,关于这个神奇的库,在之前的文章中