使用Python访问微信
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访问微信的更多相关文章
- python实现微信接口(itchat)
python实现微信接口(itchat) 安装 sudo pip install itchat 登录 itchat.auto_login() 这种方法将会通过微信扫描二维码登录,但是这种登录的方式确实 ...
- 细数Python Flask微信公众号开发中遇到的那些坑
最近两三个月的时间,断断续续边学边做完成了一个微信公众号页面的开发工作.这是一个快递系统,主要功能有用户管理.寄收件地址管理.用户下单,订单管理,订单查询及一些宣传页面等.本文主要细数下开发过程中遇到 ...
- python实现微信接口——itchat模块
python实现微信接口——itchat模块 安装 sudo pip install itchat 登录 itchat.auto_login() 这种方法将会通过微信扫描二维码登录,但是这种登录的方 ...
- Python实现微信支付(三种方式)
Python实现微信支付(三种方式) 关注公众号"轻松学编程"了解更多. 如果需要python SDk源码,可以加我微信[1257309054] 在文末有二维码. 一.准备环境 1 ...
- Python访问sqlite3数据库取得dictionary的正路!
[引子] 很多人都知道,Python里是内置了很好用的sqlite3的.但这个库有个缺陷,在执行fetchall()/fetchone()等方法后,得到的是一个tuple.以前吧,做自己的小项目,tu ...
- python 访问 zookeeper
python 访问 zookeeper zookeeper 分布式服务框架是 Apache Hadoop 的一个子项目,它主要是用来解决分布式应用中经常遇到的一些数据管理问题,如:统一命名服务.状态同 ...
- python访问redis
python访问redis 1 Linux上安装redis a) 下载 $ wget http://download.redis.io/releases/redis-3.0.5.tar.gz b) 编 ...
- 利用Python查看微信共同好友
思路 首先通过itchat这个微信个人号接口扫码登录个人微信网页版,获取可以识别好友身份的数据.这里是需要分别登录两人微信的,拿到两人各自的好友信息存到列表中. 这样一来,查共同好友就转化成了查两个列 ...
- ActiveMQ:使用Python访问ActiveMQ
Windows 10家庭中文版,Python 3.6.4,stomp.py 4.1.21 ActiveMQ支持Python访问,提供了基于STOMP协议(端口为61613)的库. ActiveMQ的官 ...
随机推荐
- 最全的MonkeyRunner自动化测试从入门到精通(7)
jython-installer-2.5.3.jar安装步骤步骤一:Jython的安装比较简单,Jython的安装程序本身就是一个Java应用程序,因此,在安装之前,你必须具备Java运行的环境. 步 ...
- 洛谷P4396 作业 [AHOI2013] 莫队
正解:莫队 解题报告: 传送门! 天呐太久没做莫队了连板子都认不出来了,,,所以复健下做下莫队的题目QAQ 就很板子鸭,和莫队板子比好像只有一个离散化,,,?就不讲了QAQ 等下直接放代码QAQ ov ...
- android studio样式文件汇总
android studio样式文件汇总:shape.Theme|styles .selector 1:shape shape用于设定形状,有6个子标签,各属性如下: res/drawable/sty ...
- 【学习笔记】Tensorflow+Inception-v3训练自己的数据
导读 喵喵的,一个大坑.本文分为吐槽和干货两部分. 一.吐槽 大周末的,被导师扣下加班,嗨气,谁叫本狗子太弱鸡呢,看起来很简单的任务倒腾了两天还没完,不扣你扣谁? 自己刚接到微调Inception-v ...
- python进阶之 线程编程
1.进程回顾 之前已经了解了操作系统中进程的概念,程序并不能单独运行,只有将程序装载到内存中,系统为它分配资源才能运行,而这种执行的程序就称之为进程.程序和进程的区别就在于:程序是指令的集合,它是进程 ...
- cocos2d-x 编译 安卓(android)apk文件
摘要: 一.下载Android环境 搭建Android环境需要用到Android SDK.NDK.Ant和JDK: 下载Android SDK 下载Android NDk 下载Android JD ...
- Cocos Creator 触摸点击事件
触摸事件// 使用枚举类型来注册枚举对象定义 对应的事件名 事件触发的时机cc.Node.EventType.TOUCH_START 'touchstart' 当手指触点落在目标节点区域内时cc.No ...
- Android -- 贝塞尔曲线公式的推导和简单使用
1,最近看了几个不错的自定义view,发现里面都会涉及到贝塞尔曲线知识,深刻的了解到贝塞尔曲线是进阶自定义view的一座大山,so,今天先和大家来了解了解. 2,贝塞尔曲线作用十分广泛,简单举几个的栗 ...
- ASP.NET页面之间传值的方式之Application(个人整理)
Application Application变量在整个应用程序生命周期中都是有效的,类似于使用全局变量一样,所以可以在不同页面中对它进行存取.它和Session变量的区别在于,前者是所有的用户共用 ...
- Delphi中类的运行期TypeInfo信息结构说明(转载)
Delphi中类的运行期TypeInfo信息结构说明作者:刘啸CnPack开发组 http://www.cnpack.org关键字:RTTI, TypeInfo, TypeData, PropInfo ...