itchat是一个开源的微信个人号接口,使用它我们可以很方便的访问我们个人微信号里的信息。itchat的github地址如下:

https://github.com/littlecodersh/itchat

在通过 pip install itchat安装此模块后,我们即可以通过使用python访问自己微信号下的信息。

1. 登陆

首先我们需要登陆我们的微信号:

import itchat
itchat.auto_login(hotReload=True)

此处的auto_login()执行后,会下载一张二维码图片,然后通过手机扫描二维码图片后即可登录个人微信。在指定hotReload=True后,此方法会生成一个本地的itchat.pkl文件,用于保存登录信息。之后在一定时间内再次登录时,就不需要再次扫描二维码。

另外一种登录方式为:

>>>itchat.login()

2. 访问微信好友信息

在成功登陆后,我们可以直接获取所有微信好友的信息:

friends = itchat.get_friends(update=True)

print(friends)

通过观察打印出的信息,我们可以发现每个好友的信息均存在一个字典里,这个字典里的key主要有:

'UserName', 'City', 'DisplayName', 'Province', 'Signature', 'NickName', 'Sex'…… 等等。

接下来,我们可以将一些主要的信息存放在几个列表里:

# information
NickName = []
Sex = []
Province = []
City = []
Signature = []
for friend in friends:
     NickName.append(friend['NickName'])
     Sex.append(friend['Sex'])
     Province.append(friend['Province'])
     City.append(friend['City'])
     Signature.append(friend['Signature'])
dic = {'NickName':NickName, 'Sex':Sex, 'Province':Province, 'City':City, 'Signature':Signature}

然后将它存为DataFrame:

from pandas import DataFrame
data = DataFrame(dic)

如果你更擅长用excel分析的话,可以将它保存为一个excel文档保存到本地:

data.to_csv('data.csv', index=True, encoding='utf_8_sig')

之后可以直接在excel里查看这些信息,如(隐私被处理):

 

City

NickName

Province

Sex

Signature

   

0

 

N1

 

X

     

1

XXX

N2

XXXX

X

XXXXX

 

2

 

N3

 

X

     

3

XXX

N4

XXX

X

XXXXX

 

4

 

N5

 

X

XXXXX

3. 分析信息

在获取了这些信息后,我们可以简单的查看一下,如:

 

1. 好友里男女比例:

import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif']=['SimHei'] #用来正常显示中文标签
sexcounts = data['Sex'].value_counts()
sexcounts.plot(kind='pie', autopct='%1.0f%%', pctdistance=0.5, labeldistance=1.2).get_figure()
plt.show()
 
其中0表示性别未填写,1表示男性,2表示女性

2. 好友里地域分布(其中地域部分未截图):

procounts = data['Province'].value_counts()
procounts.plot(
kind='bar').get_figure()

3. 好友签名里的常用词:

首先我们可以将所有签名合并:

text = ''.join(Signature)

由于会有好友在签名里使用表情,所以在文本里会有如下标签

<span class="emoji emoji1f4aa"></span><span class="emoji emoji1f4aa">

这里我们用正则将这些标签去掉:

import re
reg = re.compile('<span .*?>(.*?)</span>')
text = reg.sub('', text)

然后使用jieba这个模块对得到的文本进行分词:

import jieba
wordlist = jieba.cut(text, cut_all=True)
words = ' '.join(wordlist)

最后我们画出词云图:

coloring = np.array(Image.open('w.jpg'))

my_wordcloud = WordCloud(background_color='white', max_words=2000, mask=coloring, max_font_size=60, random_state=42, scale=2, font_path='/Library/Fonts/Microsoft/SimHei.ttf').generate(words)
image_colors = ImageColorGenerator(coloring)
plt.imshow(my_wordcloud.recolor(color_func=image_colors))
plt.imshow(my_wordcloud)
plt.axis("off")
plt.show()

看来大家都是很热爱生活的哇!

使用Python访问微信的更多相关文章

  1. python实现微信接口(itchat)

    python实现微信接口(itchat) 安装 sudo pip install itchat 登录 itchat.auto_login() 这种方法将会通过微信扫描二维码登录,但是这种登录的方式确实 ...

  2. 细数Python Flask微信公众号开发中遇到的那些坑

    最近两三个月的时间,断断续续边学边做完成了一个微信公众号页面的开发工作.这是一个快递系统,主要功能有用户管理.寄收件地址管理.用户下单,订单管理,订单查询及一些宣传页面等.本文主要细数下开发过程中遇到 ...

  3. python实现微信接口——itchat模块

    python实现微信接口——itchat模块 安装 sudo pip install itchat 登录 itchat.auto_login()  这种方法将会通过微信扫描二维码登录,但是这种登录的方 ...

  4. Python实现微信支付(三种方式)

    Python实现微信支付(三种方式) 关注公众号"轻松学编程"了解更多. 如果需要python SDk源码,可以加我微信[1257309054] 在文末有二维码. 一.准备环境 1 ...

  5. Python访问sqlite3数据库取得dictionary的正路!

    [引子] 很多人都知道,Python里是内置了很好用的sqlite3的.但这个库有个缺陷,在执行fetchall()/fetchone()等方法后,得到的是一个tuple.以前吧,做自己的小项目,tu ...

  6. python 访问 zookeeper

    python 访问 zookeeper zookeeper 分布式服务框架是 Apache Hadoop 的一个子项目,它主要是用来解决分布式应用中经常遇到的一些数据管理问题,如:统一命名服务.状态同 ...

  7. python访问redis

    python访问redis 1 Linux上安装redis a) 下载 $ wget http://download.redis.io/releases/redis-3.0.5.tar.gz b) 编 ...

  8. 利用Python查看微信共同好友

    思路 首先通过itchat这个微信个人号接口扫码登录个人微信网页版,获取可以识别好友身份的数据.这里是需要分别登录两人微信的,拿到两人各自的好友信息存到列表中. 这样一来,查共同好友就转化成了查两个列 ...

  9. ActiveMQ:使用Python访问ActiveMQ

    Windows 10家庭中文版,Python 3.6.4,stomp.py 4.1.21 ActiveMQ支持Python访问,提供了基于STOMP协议(端口为61613)的库. ActiveMQ的官 ...

随机推荐

  1. [No0000198]swagger api一键导入postman

    在用postman进行接口测试时,对于参数较多的接口时第一次添加接口参数是比较繁琐的,可利用swagger一键导入api接口,事例如下: 1.获取swagger地址 2.打开postman,点击imp ...

  2. day20:序列化模块,模块的导入

    1,什么是序列化--将原本的字典,列表等内容转换成一个字符串的过程就叫做序列化,字符串是有顺序的,序列化转向一个字符串的过程,我们平时说的序列,指的就是字符串. 2,为何要序列化?本来字符串是可以强转 ...

  3. mysql学习【第6篇】:权限和数据库设计

    狂神声明 : 文章均为自己的学习笔记 , 转载一定注明出处 ; 编辑不易 , 防君子不防小人~共勉 ! mysql学习[第6篇]:权限和数据库设计 用户和权限管理 /* 用户和权限管理 */ ---- ...

  4. VB调用C# dll

    cd C:\Windows\Microsoft.NET\Framework\v4.0.30319注册regasm myTest.dll /tlb:myTest.tlb

  5. stellar.js 视差滚动

    1.引入包 <script src="js/jquery.min.js"></script> <script src="js/jquery. ...

  6. 15 个 Android 通用流行框架大全(转载)

    1. 缓存 DiskLruCache    Java实现基于LRU的磁盘缓存 2.图片加载 Android Universal Image Loader 一个强大的加载,缓存,展示图片的库 Picas ...

  7. Hash算法和一致性Hash算法

    Hash算法 我们对同一个图片名称做相同的哈希计算时,得出的结果应该是不变的,如果我们有3台服务器,使用哈希后的结果对3求余,那么余数一定是0.1或者2,正好与我们之前的服务器编号相同,如果求余的结果 ...

  8. git中设置http代理和取消http代理

    设置http代理 git config --global https.proxy https://127.0.0.1:1080 取消http代理git config --global --unset ...

  9. php判断是否为命令行模式

    function is_cli(){ : ; }

  10. 函数作用域之闭包与this!

    函数基础友情链接:http://speakingjs.com/es5/ch01.html#_functions 作用域链图解   var x = 1; function foo(){     var ...