導語
民間一直有個傳聞......「聽說某站的小哥哥小姐姐顔值都很高哦!」
(不是顔值高才能加入,是優秀的人恰好顔值高)
所有文章完整的素材+源碼都在👇👇
粉絲白嫖源碼福利,請移步至CSDN社群或文末公衆hao即可免費。
木木子當然不負衆望,今天就火速帶你們走進某站,看看那些超高顔值的主播們的大比拼,誰
才是你心目中的第一呢?
深度解析的那些高顔值主播們。快看!滿眼全是高顔值主播,愛了愛了鴨!
今天小編就用 Python實作人臉識别檢測, 對某平台美女主播照片進行評分排名啦~看看那些主播
們,真的是高顔值主播嘛??
正文
本次文章主要内容:
一. 采集主播照片 二. 對于照片進行人臉識别檢測, 進行打分 三. 評分排名。
人臉檢測識别, 進行顔值評分 使用百度雲API接口。
1. 注冊一個百度雲賬号 2. 建立應用 --> 領取免費資源 3. 點選技術文檔 4. Access Token擷取
一、環境準備
1)運作環境
開發環境:Python3、Pycharm社群版、requests、tqdm、部分自帶的子產品安裝Python即可
使用。
相對應的安裝包/安裝教程/激活碼/使用教程/學習資料/工具插件 可以直接找我厚台擷取
2)子產品安裝
第三方庫的安裝方式如下:
一般安裝:pip install +子產品名
鏡像源安裝:pip install -i https://pypi.douban.com/simple/+子產品名
(還有很多國内鏡像源 這裡是豆瓣的 用習慣了。其他的鏡像源可以去看下之前的文章都有的)
子產品安裝問題可以詳細的找我給大家講一下的哈,之前其實也有的文章寫了幾個點的。
二、爬蟲的基本思路
1)資料來源分析
1. 明确需求: 采集的網站是那個?采集的資料是那個? 主播照片/主播昵稱。
2. 分析:主播照片/主播昵稱 在什麼地方可以獲得。
通過開發者工具<浏覽器自帶工具>進行抓包<資料包>分析
打開開發者工具: F12 / 滑鼠右鍵點選檢查選擇network
1》定位找到單張圖檔url位址 。
2》通過圖檔url位址中, 一段參數, 去搜尋查詢所對應資料包 - 點選第二頁 --> XHR --> 第一個
資料包, 通過搜尋抓包分析得到的資料包:
https://www.huya.com/cache.php?m=LiveList&do=getLiveListByPage&gameId=1663&tagAll=0&callback=getLiveListJso npCallback&page=2 包含主播昵稱 / 照片
三、代碼實作步驟
1. 發送請求, 模拟浏覽器對于url位址發送請求 。
請求連結: https://www.huya.com/cache.php?m=LiveList&do=getLiveListByPage&gameId=1663&tagAll=0&callback=getLiveListJsonpCallback&page=2
2. 擷取資料, 擷取伺服器傳回響應資料 開發者工具: response 。
3. 解析資料, 提取我們想要的資料内容 照片url / 昵稱 。
4. 儲存資料, 把圖檔資料儲存本地檔案夾。
四、代碼實作
主程式——
"""
# 導入資料請求子產品 --> 第三方子產品, 需要安裝 pip install requests
import requests
import base64
import os
import time
from tqdm import tqdm
def score(file):
"""
定義函數
:param file: 檔案路徑
:return:
"""
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/101.0.0.0 Safari/537.36'
}
# client_id 為官網擷取的AK, client_secret 為官網擷取的SK
host = 'https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials&client_id=AK&client_secret=SK'
response = requests.get(host, headers=headers)
access_token = response.json()['access_token']
# 讀取一張圖檔資料
img_content = open(file, mode='rb').read()
base_data = base64.b64encode(img_content)
request_url = "https://aip.baidubce.com/rest/2.0/face/v3/detect"
params = {
# 圖檔資料
"image": base_data,
"image_type": "BASE64",
"face_field": "beauty"
}
request_url = request_url + "?access_token=" + access_token
headers_1 = {'content-type': 'application/json'}
json_data = requests.post(request_url, data=params, headers=headers_1).json()
try:
num = json_data['result']['face_list'][0]['beauty']
return num
except:
return '識别失敗'
info_list = []
# 對于所有照片進行顔值檢測 --> 擷取檔案路徑/檔案名字
files = os.listdir('img\\')
print('正在做顔值評分, 請稍後.....')
for file in tqdm(files):
# 延時請求慢點
time.sleep(0.5)
# 完整的路徑
filename = 'img\\' + file
# 切片
name = file[:-4]
result = score(file=filename)
if result != '識别失敗':
dit = {
'主播': name,
'顔值': result
}
# 清單添加元素
info_list.append(dit)
info_list.sort(key=lambda x:x['顔值'], reverse=True)
i = 1
for info in info_list:
print(f'顔值排名第{i}的是{info["主播"]}, 顔值評分是{info["顔值"]}')
i += 1
# """
# 1. 發送請求, 模拟浏覽器對于url位址發送請求
# 僞裝模拟 --> headers 請求頭
# 字典資料類型, 要建構完整鍵值對
# <Response [200]> 響應對象, 表示請求成功
# """
# # 請求連結
# url = 'https://www.huya.com/cache.php?m=LiveList&do=getLiveListByPage&gameId=1663&tagAll=0&page=2'
# # 模拟浏覽器
# headers = {
# 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/101.0.0.0 Safari/537.36'
# }
# # 發送請求
# response = requests.get(url=url, headers=headers)
# """
# 2. 擷取資料, 擷取伺服器傳回響應資料
# 開發者工具: response
# - requests.exceptions.JSONDecodeError: Expecting value: line 1 column 1 (char 0)
# 原因: 擷取資料不是完整json資料格式
# 解決:
# 1. 擷取文本資料, 檢視資料傳回效果
# 2.
# - 通過正規表達式提取資料
# - 删掉 請求連結 裡面參數 Callback
#
# 3. 解析資料, 提取我們想要的資料内容
# 照片url / 昵稱
# response.json() --> 字典資料類型
# 根據鍵值對取值 --> 根據冒号左邊的内容[鍵], 提取冒号右邊的内容[值]
# """
# # for循環周遊, 一個一個提取清單裡面元素
# for index in response.json()['data']['datas']:
# # 提取照片
# img_url = index['screenshot']
# # 提取昵稱
# name = index['nick']
# print(name, img_url)
# """
# 4. 儲存資料 --> 需要對圖檔連結發送請求, 擷取二進制<圖檔>資料
# 'img\\'<檔案夾> + name<檔案名> + '.jpg'<檔案格式>, mode='wb'<二進制儲存>
# """
# # 擷取圖檔二進制資料
# img_content = requests.get(url=img_url, headers=headers).content
# # 儲存資料
# with open('img\\' + name + '.jpg', mode='wb') as f:
# f.write(img_content)
五、效果展示
1)資料下載下傳
2)儲存資料
3)人臉檢測
圖檔資料下載下傳之後進行人臉檢測排名,第一步調用api接口。
登入百度雲賬号——控制台——人臉識别。
下一步建立應用。
下一步實名免費領取,具體怎麼使用可以去技術文檔檢視即可,不會的可以找我拿視訊教程一
步一步來哈。
4)顔值排名
5)排名前三主播
總結
好啦,大家覺得排名前三的女主播顔值誰最好看呢?你能打多少分啦,這顔值是你的款蠻~
高顔值主播強勢來襲,趕緊為你喜歡的高顔值小哥哥小姐姐打call吧。
今天的内容就寫到這裡正式結束啦,下一期我們再見,goodby!
🎯完整的免費源碼領取處:找我吖!文末公衆hao可自行領取,滴滴我也可!
🔨推薦往期文章——
項目1.8 Wifi破解免費
Python程式設計零基礎如何逆襲成為爬蟲實戰高手之《WIFI破解》(甩萬能鑰匙十條街)爆贊爆贊~
項目1.9 爬蟲+資料分析實戰:全球疫情最新消息、淘寶爬蟲、秒殺腳本
【Python合集系列】爬蟲有什麼用,網友紛紛給出自己的答案,王老師,我..我想學那個..爬蟲。可以嘛?“(代碼免費分享)
項目1.2 Python爬蟲合集系列
【Python爬蟲系列】為什麼我喜歡python?來看看這些讓人愛不釋手的原因吧,購物網站大盤點,看過這些python做的項目,我立馬入坑了…(神奇 | 愛了,愛了)
項目1.0 2.14 情人節快樂玫瑰合集
【Python表白代碼】 2.14“Valentine‘s Day”“沒别的意思 就是借着特殊日子說聲喜歡你”你在哪兒?我去見你~(各種玫瑰源碼合集)
🎄文章彙總——
彙總合集 Python—2022 |已有文章彙總 | 持續更新,直接看這篇就夠了
(更多内容+源碼都在✨文章彙總哦!!歡迎閱讀喜歡的文章🎉~