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

01

SRE实战 互联网时代守护先锋,助力企业售后服务体系运筹帷幄!一键直达领取阿里云限量特价优惠。

先把头像下载下来

1. 获取头像接口

首先我不打算用itchat或wxpy等微信接口模块,因为这些接口貌似无法通过以微信群为组别来返回数据,我准备从网页版微信入手。

扫码登录完毕后,经过反复调试,我发现了规律,当在聊天列表中首次点进某个群聊时,服务器端会返回该群内的用户信息:

用python偷偷给班级群女同学的颜值进行排名,排最后的大姐说开学要打爆我 Python 第1张

用python偷偷给班级群女同学的颜值进行排名,排最后的大姐说开学要打爆我 Python 第2张

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

用python偷偷给班级群女同学的颜值进行排名,排最后的大姐说开学要打爆我 Python 第3张

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

用python偷偷给班级群女同学的颜值进行排名,排最后的大姐说开学要打爆我 Python 第4张

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

用python偷偷给班级群女同学的颜值进行排名,排最后的大姐说开学要打爆我 Python 第5张

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

2.保存群用户头像信息

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

用python偷偷给班级群女同学的颜值进行排名,排最后的大姐说开学要打爆我 Python 第6张

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

用python偷偷给班级群女同学的颜值进行排名,排最后的大姐说开学要打爆我 Python 第7张

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

02

— 

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

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

用python偷偷给班级群女同学的颜值进行排名,排最后的大姐说开学要打爆我 Python 第8张

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

2.遍历文件夹内的图片信息 

用python偷偷给班级群女同学的颜值进行排名,排最后的大姐说开学要打爆我 Python 第9张

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

3.用python调用接口进行人脸识别

先构建get_access_token函数:

用python偷偷给班级群女同学的颜值进行排名,排最后的大姐说开学要打爆我 Python 第10张

这里用到了上述的API Key和Secret Key参数值,并返回access_token值。 

最后,对每个头像进行识别,结果中会包含年龄、性别、脸型、笑容等信息,这里我们只取性别、年龄、颜值等3类信息:

用python偷偷给班级群女同学的颜值进行排名,排最后的大姐说开学要打爆我 Python 第11张

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

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

用python偷偷给班级群女同学的颜值进行排名,排最后的大姐说开学要打爆我 Python 第12张

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

用python偷偷给班级群女同学的颜值进行排名,排最后的大姐说开学要打爆我 Python 第13张

 

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

扫码关注我们
微信号:SRE实战
拒绝背锅 运筹帷幄