今天,我發現班級群裡的女同學幾乎都用自己的照片做頭像,面對著一張張曾經熟悉又好幾個月沒有見的面孔,我突然萌生出了一個想法:用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 協議》,轉載必須註明作者和本文連結