今天,我发现班级群里的女同学几乎都用自己的照片做头像,面对着一张张曾经熟悉又好几个月没有见的面孔,我突然萌生出了一个想法:用python给她们的颜值排个序,说干就干!
01
—
先把头像下载下来
1. 获取头像接口
首先我不打算用itchat或wxpy等微信接口模块,因为这些接口貌似无法通过以微信群为组别来返回数据,我准备从网页版微信入手。
扫码登录完毕后,经过反复调试,我发现了规律,当在聊天列表中首次点进某个群聊时,服务器端会返回该群内的用户信息:
随便点进1个群,该群总共有129个用户,大家可以看到,该过程中有3次post请求,前两次分别返回50条信息,第三条返回20条信息,也就是说,每次最多返回50条信息,这些信息中包含用户的个人昵称、群昵称、头像url、性别、地区等信息:
再来看看它post请求的具体信息:
最主要的的内容是请求主体,它包含了我们要获得信息用户的某些特征参数所以我只需在网页端找到这个请求主体,然后再复制到python里模拟请求就ok了,这也避免了分析参数的问题:
这样就获取好友列表信息了,最后for循环获得头像url!
2.保存群用户头像信息
起初我以为和上一步用同一个session会话就可以把图片保存下来,但是保存内容为空,然后我还是循规守矩,参考第一步方式开始爬取头像信息,并以群昵称命名:
运行程序就可以把群内用户的头像全保存下来了
(贴出1小部分图片供大家欣赏哈)
02
—
调用百度人脸识别接口识别头像颜值
1.注册百度云账号,创建人脸识别应用
记住API Key和Secret Key,下面调用接口要用到。
2.遍历文件夹内的图片信息
我们在img文件夹下,遍历所有头像(ImgFile为每张头像的路径)
3.用python调用接口进行人脸识别
先构建get_access_token函数:
这里用到了上述的API Key和Secret Key参数值,并返回access_token值。
最后,对每个头像进行识别,结果中会包含年龄、性别、脸型、笑容等信息,这里我们只取性别、年龄、颜值等3类信息:
在最后我根据识别的结果进行相应过滤,只保存识别结果为female的的图像,非女生头像的都给舍弃掉了,最后把结果保存到表格中就ok。
一切就绪之后,我迫不及待的把结果发到了群里,以为会有人夸我聪明能干:
然后,排名最后的大姐给我发了下面一句话:
怎么办啊,心好慌,不敢去上学了