前言
随着现在直播的兴起,主播这个职业逐渐走入人们的视野。现在各大平台都有当家花旦、一哥、一姐等称号。其实人气是一方面,但是颜值才是硬实力。
接下来带大家进行主播的颜值检测评分,看看谁是最靓的崽(*^▽^*)
本篇大致内容:
1、爬取主播的直播人脸图
2、调用百度人脸检测开放接口,进行颜值打分
环境介绍:
python 3.6
pycharm
requests
parsel(xapth)
1、爬取主播的图片
1.1 导入模块
import requests import parsel
1.2 分析目标网页,确定爬取的url路径,headers参数
代码如下:
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 发送请求 -- requests 模拟浏览器发送请求,获取响应数据
代码如下:
response = requests.get(url=base_url, headers=headers)
html_data = response.text
1.4 解析数据 -- parsel 转化为Selector对象,Selector对象具有xpath的方法,能够对转化的数据进行处理
代码如下:
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) # 请求图片数据 img_data = requests.get(url=img_url, headers=headers).content
1.5 保存数据
代码如下:
# 准备文件名 file_name = img_title + '.jpg' with open('img\\' + file_name, mode='wb') as f: print('正在保存:', file_name) f.write(img_data)
2、调用百度人脸检测开放接口
在百度AI开放平台注册账号
点击进入人脸识别
创建一个应用
创建完成以后进入管理应用,打开应用,点击下载SDK
不要下载,点击使用说明
安装SDK
pip install baidu-aip
根据百度接口示例来写代码
代码如下:
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) # 调用颜值检测的接口 with open(file_Path, 'rb') as file: data = base64.b64encode(file.read()) # 图片类型 BASE64:图片的base64值,base64编码后的图片数据 image = data.decode() imageType = "BASE64" options = {} options["face_field"] = 'beauty' """ 调用人脸检测 """ result = client.detect(image, imageType, options) print(result) return result['result']['face_list'][0]['beauty'] if __name__ == '__main__': face_rg(r'..\主播颜值检测\img\蓝云-夏花依旧.jpg')
3、检测打分
3.1 导入模块,做循环检测的接口
代码如下:
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()) # 字典根据值降序排列 change_score = sorted(score_dict.items(), key=lambda x: x[1], reverse=True) # lambda中的1是元组的索引 print(change_score)
3.2 数据输出
for a, b in enumerate(change_score): print('小姐姐的名字是:{}丨颜值名次是:第{}名丨她的颜值分数为:{}'.format(change_score[a][0], a+1, change_score[a][1]))
运行代码后得出最后的颜值打分检测结果
加企鹅群695185429即可免费获取,资料全在群文件里。资料可以领取包括不限于Python实战演练、PDF电子文档、面试集锦、学习资料等