微信好友 一览无余

【itchat】一个微信的开源API,微信是一种常用的社交网络应用程序。

通过python中的聊天访问个人微信账户,然后通过微信机器人进行处理个人所有基本信息。

安装itchat模块

1
pip install itchat

简单使用

1
2
3
import itchat
itchat.auto_login()
itchat.send('Hello, filehelper', toUserName='filehelper')

详情见itchat官方网站

主要用到的方法有:

  • itchat.login()微信扫码登录
  • itchat.get_friends()返回完整的列表好友,每个好友为一个字典,其中第一项为自己的账号基本信息,带入参数update=True,将更新好友列表并返回,具体使用itchat.get_friends(update=True)

技巧:使用itchat.login()进行登录微信会有一个问题,就是每运行一次就会生成一个二维码,叮··· 扫描登录,是不是过于麻烦了? 直接采用itchat.auto_login(),在一定时间内,可以不用扫码登录,只需要在手机移动端确定登录就行了,毕竟是在模拟网页登录

开始操作

1
2
3
4
5
6
7
8
# 导入所需要的库
import itchat
import csv
import pandas as pd
# 启用热键扫码登录微信
itchat.auto_login(hotReload=True)
# 抓取好友信息
friends = itchat.get_friends(update=True)[0:]

这时,好友信息已经在存储在friends里面了。

定义函数抓取个字段信息get_var(var)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
def get_var(var):
variable = []
for i in friends:
value = i[var]
variable.append(value)
return variable


# 调用函数得到各个变量,存在csv文件中
NickName = get_var('NickName')
Sex = get_var('Sex')
Province = get_var('Province')
City = get_var('City')
Signature = get_var('Signature')
Username = get_var('UserName')
ContactFlag = get_var('ContactFlag')
SnsFlag = get_var('SnsFlag')

定义函数parse_friends(),将得到的好友数据存储在txt文本中

1
2
3
4
5
6
7
8
9
10
11
12
13
14
# 收集并保存好友信息数据
def parse_friends():
# 设置需要爬取的信息字段,使用字典形式,参考官网以及个人需求设置字段信息
result = {'NickName': NickName, 'Sex': Sex, 'Province': Province, 'City': City, 'UserName': Username,
'ContactFlag': ContactFlag, 'SnsFlag': SnsFlag, 'Signature': Signature, }

for user in friends:
with open('myfriends.txt', 'a', encoding='utf8') as fh:
fh.write('-------------------------\n')
for r in result:
with open('myfriends.txt', 'a', encoding='utf8') as fh:
fh.write(str(r) + ":" + str(user.get(r))+"\n")

print("分析完毕!")
设置最后打印标识,提醒已完成信息存储;

同时当前文件夹中出现一个文件myfriends.txt
信息文件
信息文件

定义函数male_female()统计男女以及其他人数和比例

统计
统计

然后利用pandas模块将文件信息保存在csv文件

1
2
3
4
5
6
7
8
data = {'NickName': NickName, 'Sex': Sex, 'Province': Province, 'City': City, 'UserName': Username, 'ContactFlag': ContactFlag, 'SnsFlag':SnsFlag, 'Signature':Signature, }
frame = DataFrame(data)
frame.to_csv('data2.csv', index=True, encoding='utf-8')

with open('data2.csv', 'r', encoding='utf-8') as myfile:
reader = csv.reader(myfile)
for row in reader:
print(row)
便于后续采用pandas中的 value_counts 进行计数可视化处理

简单可视化操作

采用pyecharts中的Pie绘制饼图

1
2
# 导入模块
from pyecharts.charts import Pie
1
2
3
4
5
6
configure(output_image=True)
pie = Pie("性别比例", background_color='white', title_text_size=25)
attr = ['male', 'female', 'other']
v1 = [57.14, 27.04, 15.82] # 好友男女百分比
pie.add('', attr, v1, is_label_show=True)
pie.render() # render渲染,默认在当前文件夹中的render.html

再使用pyecharts时,可能会出现一些错误,比如不存在Pie或者无法导入Pie等

看了一些博客之后,我采用的方法是降级,即降低库的版本,可能是与python版本有冲突

效果

比例.png
比例.png
或许这就是你Single的原因吧 –苦笑–