网上看了一篇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/

官方:

https://pypi.python.org/pypi

四、开始

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模块了解微信好友的更多相关文章

  1. Python使用wxpy模块实现微信两两群组消息同步

    python使用wxpy模块提供的微信API接口实现两两群组的消息同步 安装模块: pip install wxpy 注意:需要同步的微信群需要保存到通讯录中 以下是自己闲来无事写的代码,暂时还存在以 ...

  2. python 使用wxpy实现获取微信好友列表 头像 群成员

    最近在学习 python 突然想要试试能不能把微信里面的微信群和好友取出来 结果百度了一下 找到了 wxpy 这怎么能不试一下呢 用到 wxpy.threading.os.time 四个库 第一步 判 ...

  3. Python 实现获取微信好友信息

    最近用闲余时间看了点python,在网上冲浪时发现有不少获取微信好友信息的博客,对此比较感兴趣,于是自己敲了敲顺便记录下来. 一.使用 wxpy 模块库获取好友男比例信息和城市分布. # -*- co ...

  4. 使用wxpy来实现自动发送消息统计微信好友信息的功能

    发送消息太频繁会出现禁言消息 1:导入wxpy模块 pip install wxpy pip3 install wxpy #二者选一 调用模块 # 导入模块 from wxpy import * # ...

  5. 教你用Python制作微信好友背景墙

    目录: 0 引言 1 环境 2 代码实现 3 后记 0 引言 前段时间,微信朋友圈开始出现了一种晒照片新形式,微信好友墙,即在一张大图片中展示出自己的所有微信好友的头像. 效果如下图,出于隐私考虑,这 ...

  6. 使用 python 进行微信好友分析

    使用 python 进行微信好友分析 1. 使用到的库 ① wxpy:初始化微信机器人 ② openpyxl:保存微信好友数据为Excel表格 ③ pyecharts:生成可视化的地图 ④ wordc ...

  7. python--制作微信好友照片墙

    知识来源:https://zhuanlan.zhihu.com/p/73975013 1.环境 os:MAC tool:python 3.7 ,pip3.7 2.前提: 使用pip3.7 instal ...

  8. Python-定时爬取指定城市天气(一)-发送给关心的微信好友

    一.背景 上班的日子总是3点一线,家里,公司和上班的路径,对于一个特别懒得我来说,经常遇到上班路上下雨了,而我却没带伞,多么痛的领悟.最近对python有一种狂热的学习热情,写了4年多的C++代码,对 ...

  9. python-给微信好友自动发送天气预报和每日一句

    周末在宿舍学习python,女朋友那突然下了倾盆大雨,在图书馆门口跟我抱怨好久.最近又在学习python,就想给女朋友写个小程序,每天早上将每天的天气预报通过微信发个她. 在本程序中,用到了几个重要的 ...

随机推荐

  1. 二、JVM — 垃圾回收

    JVM 垃圾回收 写在前面 本节常见面试题 本文导火索 1 揭开 JVM 内存分配与回收的神秘面纱 1.1 对象优先在 eden 区分配 1.2 大对象直接进入老年代 1.3 长期存活的对象将进入老年 ...

  2. 【源码解读】cycleGAN(三):数据读取

    源码地址:https://github.com/aitorzip/PyTorch-CycleGAN 数据的读取是比较简单的,cycleGAN对数据没有pair的需求,不同域的两个数据集分别存放于A,B ...

  3. DataTable中如何去除重复的项 (获得某个字段中的不重复项)

    就是获取DataTable中某一列的值,因为从数据库中检索数据时,按照2个字段进行分组,而要获得的那一列刚好在分组这两列中,所以该列的值必然有重复,于是就想到了去除重复,有了思路以后在网上看了一些方法 ...

  4. Scala学习笔记(6)对象

    1.单例对象.Scala没有静态方法或字段,可以使用object这个语法结构来达到同样的目的.对象定义了单个实例,包含了你想要的特性. object Accounts{ def newUniqueNu ...

  5. 34. Find First and Last Position of Element in Sorted Array (JAVA)

    Given an array of integers nums sorted in ascending order, find the starting and ending position of ...

  6. 解决solr无法加core

    提示缺少配置文件:Error CREATEing SolrCore 'new_core': Unable to create core [new_core] Caused by: Can't find ...

  7. STL的容器哈希表

    C++ STL中,哈希表对应的容器是 unordered_map(since C++ 11).根据 C++ 11 标准的推荐,用 unordered_map 代替 hash_map. 与Map的区别 ...

  8. 六、ARM 寻址方式

    寻址方式是针对源操作数来说的 6.1 立即数寻址 源操作数是立即数 立即数:操作码以 # 号开头的数字为立即数 立即数寻址: MOV   R0, #0x300 伪指令:        LDR   R0 ...

  9. 通过spring工具类获取bean

    package xxx; import org.springframework.beans.BeansException; import org.springframework.beans.facto ...

  10. pip install mysql_python报错解决办法

    首先请注意,mysql_python只支持Python2,所以假如你是python3,就直接用python-connector去吧.下面这一条命令就可以了 pip install mysql-conn ...