使用wxpy模块了解微信好友
网上看了一篇python文章,内容简单有趣,正好可以练习一下。原文连接:http://mp.weixin.qq.com/s/oI2pH8uvq4kwYqc4kLMjuA
一、环境:Windows+python3+eclipse
二、用到的package:首先就是 wxpy ,cmd控制台使用 pip install wxpy 即可安装。
还需要安装几个后面统计数据和画图的package:jieba(中文分词),numpy,pandas,scipy(定义数据框架),matplotlib(画图),wordcloud(生成词云)。这些都可以使用 pip install *** 命令来安装,
但是有时候网速太慢,会超时报错,一是可以再试几次就好了;二是到网上下载打包好的 ***.whl 文件,在文件目录下打开cmd控制台,使用 pip install +"文件全名" 安装。(大文件推荐这种)
三、列几个常用的下载wheel文件的网址:
非官方:
https://www.lfd.uci.edu/~gohlke/pythonlibs/
官方:
四、开始
1、wxpy中有一个机器人对象,机器人 Bot
对象可被理解为一个 Web 微信客户端。Bot
在初始化时便会执行登陆操作,需要手机扫描登陆。
通过机器人对象 Bot
的 chats()
, friends()
,groups()
, mps()
方法, 可分别获取到当前机器人的 所有聊天对象、好友、群聊,以及公众号列表。
#initialize the robot
bot = Bot() # get all the friends
myFriends = bot.friends()
print(type(myFriends))
结果:
wxpy.api.chats.chats.Chats
对象是多个聊天对象的合集,可用于搜索或统计,可以搜索和统计的信息包括sex(性别)、province(省份)、city(城市)和signature(个性签名)等。
2、使用一个字典sex_dict来统计好友中男性和女性的数量
sex_dict = {'male':0,'female':0}
for friend in myFriends:
if friend.sex == 1:
sex_dict['male'] +=1
elif friend.sex ==2:
sex_dict['female'] +=1
print(sex_dict)
结果:
3、数据处理
采用 ECharts饼图 进行数据的呈现,打开链接http://echarts.baidu.com/echarts2/doc/example/pie1.html ,可以看到左侧为数据,右侧为呈现的数据图,其他的形式的图也是这种左右结构。
看看我的:
哈哈,人不多,微信用的少。女生少啊。。。
4.好友分布:
#统计省份
province_dict = {'北京': 0, '上海': 0, '天津': 0, '重庆': 0,
'河北': 0, '山西': 0, '吉林': 0, '辽宁': 0, '黑龙江': 0,
'陕西': 0, '甘肃': 0, '青海': 0, '山东': 0, '福建': 0,
'浙江': 0, '台湾': 0, '河南': 0, '湖北': 0, '湖南': 0,
'江西': 0, '江苏': 0, '安徽': 0, '广东': 0, '海南': 0,
'四川': 0, '贵州': 0, '云南': 0,
'内蒙古': 0, '新疆': 0, '宁夏': 0, '广西': 0, '西藏': 0,
'香港': 0, '澳门': 0}
for friend in myFriends:
if friend.province in province_dict.keys():
province_dict[friend.province] +=1
data = []
for key,value in province_dict.items():
data.append({'name':key,'value':value})
print(data)
打印出来的是全国分布,见下图:
打开Echarts,将数据写入左侧的代码中,刷新一下可以看到分布图:
看一眼就暴露了,山东人在湖南系列(OR 湖南人在山东系列、、、)哈哈。。。
5.处理签名(signature),生成词云
(在一开始,我将所用到的package都 import 进来)
#signature
def writeFile(path,txt):
#load txt
with open(path,'a',newline='') as f:
f.write(txt)
#statistics of signature
for friend in myFriends:
pattern = re.compile(r'[一-龥]+') #'[一-龥]+'几乎可以代表所有汉字
filterData = re.findall(pattern,friend.signature)
writeFile("signatures.txt", ''.join(filterData)) #read_text_file
def readFile(path):
with open(path,'r',newline='') as f:
return f.read() content = readFile("signatures.txt")
segment = jieba.lcut(content)
words_df = pd.DataFrame({'segment':segment}) stopwords = pd.read_csv("stop_words_zh.txt",index_col=False,quoting=3,names={'stopword'},encoding='utf-8')
words_df = words_df[~words_df.segment.isin(stopwords.stopword)] words_stat = words_df.groupby(by=['segment'])['segment'].agg({"计数":numpy.size})
words_stat = words_stat.reset_index().sort_values(by=['计数'],ascending=False) #set wordcloud
color_mask = imread('background.jpg')
wordcloud = WordCloud(font_path='simhei.ttf',background_color='white',max_words=100,mask=color_mask
,max_font_size=100,random_state=42,width=1000,height=850,margin=2,)
#generate wordcloud
word_frequency = {x[0]:x[1]for x in words_stat.head(100).values}
print(word_frequency)
word_frequency_dict = {}
for key in word_frequency:
word_frequency_dict[key] = word_frequency[key] wordcloud.generate_from_frequencies(word_frequency_dict)
image_colors = ImageColorGenerator(color_mask)
wordcloud.recolor(color_func=image_colors)
#save the pic
wordcloud.to_file('output.png')
plt.imshow(wordcloud)
plt.axis('off')
plt.show()
(background.jpg是我找的一张python图标的照片做背景图)
看看结果:
五、总结
1.我这里是一步一步安装原文来的,原文结尾将各个部分写成函数,函数式编程,规范;
2.练习是多次用手机扫描程序运行生成的二维码,据说会被封,但是在我使用的过程中没有发生,哈哈。。。
使用wxpy模块了解微信好友的更多相关文章
- Python使用wxpy模块实现微信两两群组消息同步
python使用wxpy模块提供的微信API接口实现两两群组的消息同步 安装模块: pip install wxpy 注意:需要同步的微信群需要保存到通讯录中 以下是自己闲来无事写的代码,暂时还存在以 ...
- python 使用wxpy实现获取微信好友列表 头像 群成员
最近在学习 python 突然想要试试能不能把微信里面的微信群和好友取出来 结果百度了一下 找到了 wxpy 这怎么能不试一下呢 用到 wxpy.threading.os.time 四个库 第一步 判 ...
- Python 实现获取微信好友信息
最近用闲余时间看了点python,在网上冲浪时发现有不少获取微信好友信息的博客,对此比较感兴趣,于是自己敲了敲顺便记录下来. 一.使用 wxpy 模块库获取好友男比例信息和城市分布. # -*- co ...
- 使用wxpy来实现自动发送消息统计微信好友信息的功能
发送消息太频繁会出现禁言消息 1:导入wxpy模块 pip install wxpy pip3 install wxpy #二者选一 调用模块 # 导入模块 from wxpy import * # ...
- 教你用Python制作微信好友背景墙
目录: 0 引言 1 环境 2 代码实现 3 后记 0 引言 前段时间,微信朋友圈开始出现了一种晒照片新形式,微信好友墙,即在一张大图片中展示出自己的所有微信好友的头像. 效果如下图,出于隐私考虑,这 ...
- 使用 python 进行微信好友分析
使用 python 进行微信好友分析 1. 使用到的库 ① wxpy:初始化微信机器人 ② openpyxl:保存微信好友数据为Excel表格 ③ pyecharts:生成可视化的地图 ④ wordc ...
- python--制作微信好友照片墙
知识来源:https://zhuanlan.zhihu.com/p/73975013 1.环境 os:MAC tool:python 3.7 ,pip3.7 2.前提: 使用pip3.7 instal ...
- Python-定时爬取指定城市天气(一)-发送给关心的微信好友
一.背景 上班的日子总是3点一线,家里,公司和上班的路径,对于一个特别懒得我来说,经常遇到上班路上下雨了,而我却没带伞,多么痛的领悟.最近对python有一种狂热的学习热情,写了4年多的C++代码,对 ...
- python-给微信好友自动发送天气预报和每日一句
周末在宿舍学习python,女朋友那突然下了倾盆大雨,在图书馆门口跟我抱怨好久.最近又在学习python,就想给女朋友写个小程序,每天早上将每天的天气预报通过微信发个她. 在本程序中,用到了几个重要的 ...
随机推荐
- mysql分组统计后将结果顺序排列(union实现)
工作中用到统计12月份通话记录,统计号码拨打次数,但是问题出在一个号码可以拨打多次,每次可能接通也可能不接通,如果用主叫号码caller字段group by分组后count(*)统计数目,这样会导致不 ...
- ArcGIS Server导出shp文件
需求: 在项目中客户提出需要在Web端能够定义条件将后台的数据导出shp文件,并下载. 实现: 基于ArcGIS开发导出矢量数据的服务,用户输入导出数据类型.过滤条件.导出范围等条件,服务能够快速将相 ...
- Ionic创建混合App(二)
ionic 2 启动应用进入欢迎引导页 1.首先,使用CLI命令,创建引导页面 ionic g page welcome 2.需改welcome.html模板文件 <ion-slides pag ...
- Red Hat Enterprise Linux查看系统版本命令
# arch 返回结果为i686表示32位系统,x86_64表示64位系统. # uname -a # uname -r # lsb_release -a # cat /proc/version # ...
- 关于使用iframe的父子页面进行简单的相互传值
当一个页面使用了iframe作为嵌套时,如何想要将父页面的数据传给iframe子页面,那iframe所指向的呢个子页面是怎么获取呢,又或者子页面的数据要给父页面使用,那么父页面又如何获取子页面的数据呢 ...
- 安装sysbench,报错"Could not resolve 'ports.ubuntu.com'"
在ubuntu系统中安装sysbench时报错“Could not resolve 'ports.ubuntu.com'”怎么办呢? 安装时报错: 亲测可用的方法: 修改 resolv.conf 文件 ...
- bash_profile和bashrc区别
[.bash_profile 与 .bashrc 的区别].bash_profile is executed for login shells, while .bashrc is executed f ...
- JavaEE高级-Spring Data学习笔记
Spring Data概述 - Spring Data : Spring 的一个子项目.用于简化数据库访问,支持NoSQL 和 关系数据存储.其主要目标是使数据库的访问变得方便快捷. - Spring ...
- Qt项目界面文件(.ui)及其作用(超详细)
http://c.biancheng.net/view/1820.html Qt 项目中,后缀为“.ui”的文件是可视化设计的窗体的定义文件,如 widget.ui.双击项目文件目录树中的文件 wid ...
- 18.Linux-CentOS系统根目录空间使用率100%问题?
问题描述:发现服务器根目录爆满100%? 排查步骤:1.先检查文件索引节点iNode使用率情况,[root@localhost ~]# df -hTi2.查看无用文件是否居多:[root@localh ...