用 python 偷偷给班级群女同学的颜值进行排名


今天,我发现班级群里的女同学几乎都用自己的照片做头像,面对着一张张曾经熟悉又好几个月没有见的面孔,我突然萌生出了一个想法:用 python 给她们的颜值排个序,说干就干!

1 先把头像下载下来#

1.1 获取头像接口#

首先我不打算用 itchat 或 wxpy 等微信接口模块,因为这些接口貌似无法通过以微信群为组别来返回数据,我准备从网页版微信入手。
扫码登录完毕后,经过反复调试,我发现了规律,当在聊天列表中首次点进某个群聊时,服务器端会返回该群内的用户信息:

随便点进 1 个群,该群总共有 129 个用户,大家可以看到,该过程中有 3 次 post 请求,前两次分别返回 50 条信息,第三条返回 20 条信息,也就是说,每次最多返回 50 条信息,这些信息中包含用户的个人昵称、群昵称、头像 url、性别、地区等信息:

再来看看它 post 请求的具体信息:

最主要的的内容是请求主体,它包含了我们要获得信息用户的某些特征参数所以我只需在网页端找到这个请求主体,然后再复制到 python 里模拟请求就 ok 了,这也避免了分析参数的问题:

这样就获取好友列表信息了,最后 for 循环获得头像 url!

1.2 保存群用户头像信息#

起初我以为和上一步用同一个 session 会话就可以把图片保存下来,但是保存内容为空,然后我还是循规守矩,参考第一步方式开始爬取头像信息,并以群昵称命名:

运行程序就可以把群内用户的头像全保存下来了

(贴出 1 小部分图片供大家欣赏哈)

2 调用百度人脸识别接口识别头像颜值#

2.1 注册百度云账号,创建人脸识别应用#


记住 API Key 和 Secret Key,下面调用接口要用到。

2.2 遍历文件夹内的图片信息#


我们在 img 文件夹下,遍历所有头像(ImgFile 为每张头像的路径)

2.3 用 python 调用接口进行人脸识别#

先构建 get_access_token 函数:

这里用到了上述的 API Key 和 Secret Key 参数值,并返回 access_token 值。
最后,对每个头像进行识别,结果中会包含年龄、性别、脸型、笑容等信息,这里我们只取性别、年龄、颜值等 3 类信息:

在最后我根据识别的结果进行相应过滤,只保存识别结果为 female 的的图像,非女生头像的都给舍弃掉了,最后把结果保存到表格中就 ok。

一切就绪之后,我迫不及待的把结果发到了群里,以为会有人夸我聪明能干:

然后,排名最后的大姐给我发了下面一句话:

怎么办啊,心好慌,不敢去上学了

文中所使用的代码已上传,获取请在公众号 “python 的爬虫与数据分析之路” 里回复关键字:颜值

本作品采用《CC 协议》,转载必须注明作者和本文链接