前言
隨著現(xiàn)在直播的興起,主播這個職業(yè)逐漸走入人們的視野?,F(xiàn)在各大平臺都有當(dāng)家花旦、一哥、一姐等稱號。其實(shí)人氣是一方面,但是顏值才是硬實(shí)力。
接下來帶大家進(jìn)行主播的顏值檢測評分,看看誰是最靚的崽(*^▽^*)
本篇大致內(nèi)容:
1、爬取主播的直播人臉圖
2、調(diào)用百度人臉檢測開放接口,進(jìn)行顏值打分
環(huán)境介紹:
python 3.6
pycharm
requests
parsel(xapth)
1、爬取主播的圖片
1.1 導(dǎo)入模塊
import requests
import parsel
1.2 分析目標(biāo)網(wǎng)頁,確定爬取的url路徑,headers參數(shù)
代碼如下:
base_url = https://www.huya.com/g/4079
headers = {User-Agent: Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.117 Safari/537.36}
1.3 發(fā)送請求 -- requests 模擬瀏覽器發(fā)送請求,獲取響應(yīng)數(shù)據(jù)
代碼如下:
response = requests.get(url=base_url, headers=headers)
html_data = response.text
1.4 解析數(shù)據(jù) -- parsel 轉(zhuǎn)化為Selector對象,Selector對象具有xpath的方法,能夠?qū)D(zhuǎn)化的數(shù)據(jù)進(jìn)行處理
代碼如下:
parse = parsel.Selector(html_data)
data_list = parse.xpath(//li[@class="game-live-item"])
# print(data_list)
for data in data_list:
img_url = data.xpath(./a/img/@data-original).get() # 主播人臉圖片的url地址
img_title = data.xpath(.//span/i/@title).get() # 主播的名字
print(img_url, img_title)
# 請求圖片數(shù)據(jù)
img_data = requests.get(url=img_url, headers=headers).content
1.5 保存數(shù)據(jù)
代碼如下:
# 準(zhǔn)備文件名
file_name = img_title + .jpg
with open(img\\ + file_name, mode=wb) as f:
print(正在保存:, file_name)
f.write(img_data)
2、調(diào)用百度人臉檢測開放接口
在百度AI開放平臺注冊賬號
點(diǎn)擊進(jìn)入人臉識別
創(chuàng)建一個應(yīng)用
創(chuàng)建完成以后進(jìn)入管理應(yīng)用,打開應(yīng)用,點(diǎn)擊下載SDK
不要下載,點(diǎn)擊使用說明
安裝SDK
pip install baidu-aip
根據(jù)百度接口示例來寫代碼
代碼如下:
from aip import AipFace
import base64
def face_rg(file_Path):
""" 你的 api_id AK SK """
api_id = 20107883
api_key = Xela0yPoFtERUBSTFtNlEKbO
secret_key = E5TmneyfAzxfzowgwRErLT8RYe7MfkfG
client = AipFace(api_id, api_key, secret_key) # 調(diào)用顏值檢測的接口
with open(file_Path, rb) as file:
data = base64.b64encode(file.read()) # 圖片類型 BASE64:圖片的base64值,base64編碼后的圖片數(shù)據(jù)
image = data.decode()
imageType = "BASE64"
options = {}
options["face_field"] = beauty
""" 調(diào)用人臉檢測 """
result = client.detect(image, imageType, options)
print(result)
return result[result][face_list][0][beauty]
if __name__ == __main__:
face_rg(r..\主播顏值檢測\img\藍(lán)云-夏花依舊.jpg)
3、檢測打分
3.1 導(dǎo)入模塊,做循環(huán)檢測的接口
代碼如下:
import os
from 主播顏值檢測.顏值檢測_接口 import face_rg
path = ./img
image_list = os.listdir(path)
# print(image_list)
score_dict = {}
for image in image_list:
try:
name = image.split(.)[0]
# print(name)
image_path = path + \\ + image # 圖片的路徑
face_score = face_rg(image_path)
# print(face_score)
score_dict[name] = face_score
# print(score_dict)
except Exception as e:
print(正在檢測:{}|檢測失?。。。?format(str(name)))
else:
print(正在檢測:{}|顏值打分為:{}.format(str(name), str(face_score)))
print(\n===========================================檢測完成===========================================)
print(score_dict.items())
# 字典根據(jù)值降序排列
change_score = sorted(score_dict.items(), key=lambda x: x[1], reverse=True) # lambda中的1是元組的索引
print(change_score)
3.2 數(shù)據(jù)輸出
for a, b in enumerate(change_score):
print(小姐姐的名字是:{}丨顏值名次是:第{}名丨她的顏值分?jǐn)?shù)為:{}.format(change_score[a][0], a+1, change_score[a][1]))
運(yùn)行代碼后得出最后的顏值打分檢測結(jié)果
歡迎關(guān)注小編,除了分享技術(shù)文章之外還有很多福利,私信學(xué)習(xí)資料可以領(lǐng)取包括不限于Python實(shí)戰(zhàn)演練、PDF電子文檔、面試集錦、學(xué)習(xí)資料等。