「itchat」一个开源的微信个人接口,今天我们就用itchat爬取微信好友信息,无图言虚空
三张图分别是「微信好友头像拼接图」、「性别统计图」、「个性签名统计图」
「微信好友头像拼接图」
「性别统计图」
「个性签名统计图」
安装
1 | pip3 install itchat |
主要用到的方法:itchat.login()
微信扫描二维码登录itchat.get_friends()
返回完整的好友列表,每个好友为一个字典, 其中第一项为本人的账号信息,传入update=True
, 将更新好友列表并返回, get_friends(update=True)
itchat.get_head_img(userName="")
根据userName
获取好友头像
微信好友头像拼接图
获取好友信息,get_head_img
拿到每个好友的头像,保存文件,将头像缩小拼接至一张大图。
先获取好友头像:
1 | def headImg(): |
这里需要提前在同目录下新建了文件夹img
,否则会报No such file or directory
错误,img
用于保存头像图片,遍历好友列表,根据下标count
命名头像,到这里可以看到文件夹里已经保存了所有好友的头像。
接下来就是对头像进行拼接
遍历文件夹的图片,random.shuffle(imgs)
将图片顺序打乱
用640*640的大图来平均分每一张头像,计算出每张正方形小图的长宽,压缩头像,拼接图片,一行排满,换行拼接,好友头像多的话,可以适当增加大图的面积,具体代码如下:
1 | def createImg(): |
好友头像图成型,头像是随机打乱拼接的
性别统计图
同样itchat.login()
登录获取好友信息,根据Sex
字段判断性别,1 代表男性(man),2 代表女性(women),3 未知(unknown)
1 | def getSex(): |
性别统计柱状图
个性签名统计图
获取好友信息,Signature
字段是好友的签名,将个性签名保存到.txt文件,部分签名里有表情之类的会变成emoji 类的词,将这些还有特殊符号的替换掉。
1 | def getSignature(): |
sign.txt
文件里写入了所有好友的个性签名,使用wordcloud包生成词云图,pip install wordcloud
同样可以采用jieba
分词生成词图,不使用分词的话就是句子展示,使用jieba
分词的话可以适当把max_font_size
属性调大,比如100。
需要注意的是运行不要在虚拟环境下,deactivate
退出虚拟环境再跑,详细代码如下:
生成词云图
1 | def create_word_cloud(filename): |
句子图
由此看来,一个20多岁程序员小伙的朋友圈满满都是正能量啊,2333。
itchat 除了以上的信息,还有省市区等等信息都可以抓取,另外还可以实现机器人自动聊天等功能,这里就不一一概述了。