-
总看一个主播多没意思,用python给女主播做一个颜值排名,只看颜值高的!
众所周知,能去直播的女主播一般都还可以,但是两三个还能肉眼分辨看看谁好看,几百个可就看不过来了吧。
那这时候python的用处就来了,对她们的照片进行自动分析打分,给她们做一个排行榜,哪个好看一目了然~
获取照片
既然要做排名打分,那么就得先准备图片,第一步先获取女主播图片。
1、分析目标网页
确定爬取的url路径,headers参数。
base_url = 'https://www.***.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'}
2、发送请求
requests 模拟浏览器发送请求,获取响应数据。
response = requests.get(url=base_url, headers=headers)
html_data = response.text
3、解析数据
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)
4、保存数据
# 请求图片数据 img_data = requests.get(url=img_url, headers=headers).content # 准备文件名 file_name = img_title + '.jpg' with open('img\\' + file_name, mode='wb') as f: print('正在保存:', file_name) f.write(img_data)
颜值检测
调用人脸接口,进行颜值检测,没有的话大家自己弄一下,我就不提供了。
如果文章看不过瘾,我给大家准备了对应的视频讲解,Python对女主播进行颜值打分,实现排名
def face_rg(file_Path): """ 你的 api_id AK SK """ api_id = '19895116' api_key = 'aR6Oytn7ycDyhjBqPYCAGgqh' secret_key = 'dXjz8QELSaj238GuEr0I3xnarEurWhit' 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'C:\Users\admin\Desktop\练习\主播颜值检测\img\9c-专属男友.jpg')
# 我还给大家准备了这些资料,直接在群里就可以免费领取了。 # 群:924040232 # python学习路线汇总 # 精品Python学习书籍100本 # Python入门视频合集 # Python实战案例 # Python面试题 # Python相关软件工具/pycharm永久激活
四、颜值打分
万事具备只欠东风,打分的东风。
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是元组的索引 x表示参数 x[1]表示返回值 print(change_score) # 数据输出 # enumerate枚举 enumerate多用于在for循环中得到计数,利用它可以同时获得索引和值,即需要index和value值的时候可以使用enumerate print(list(enumerate(change_score))) for a, b in enumerate(change_score): print('小姐姐的名字是:{}丨颜值名次是:第{}名丨她的颜值分数为:{}'.format(change_score[a][0], a+1, change_score[a][1]))
颜值打分
颜值排行
哎,到这里就成功了,兄弟们可以去试试。
记得点赞三连哇,爱你哟~
出处:https://www.cnblogs.com/hahaa/p/15797913.html
最新更新
Objective-C语法之代码块(block)的使用
VB.NET eBook
Add-in and Automation Development In VB.NET 2003 (F
Add-in and Automation Development In VB.NET 2003 (8
Add-in and Automation Development in VB.NET 2003 (6
Add-in and Automation Development In VB.NET 2003 (5
AddIn Automation Development In VB.NET 2003 (4)
AddIn And Automation Development In VB.NET 2003 (2)
Addin and Automation Development In VB.NET 2003 (3)
AddIn And Automation Development In VB.NET 2003 (1)
2个场景实例讲解GaussDB(DWS)基表统计信息估
常用的 SQL Server 关键字及其含义
动手分析SQL Server中的事务中使用的锁
openGauss内核分析:SQL by pass & 经典执行
一招教你如何高效批量导入与更新数据
天天写SQL,这些神奇的特性你知道吗?
openGauss内核分析:执行计划生成
[IM002]Navicat ODBC驱动器管理器 未发现数据
初入Sql Server 之 存储过程的简单使用
SQL Server -- 解决存储过程传入参数作为s
武装你的WEBAPI-OData入门
武装你的WEBAPI-OData便捷查询
武装你的WEBAPI-OData分页查询
武装你的WEBAPI-OData资源更新Delta
5. 武装你的WEBAPI-OData使用Endpoint 05-09
武装你的WEBAPI-OData之API版本管理
武装你的WEBAPI-OData常见问题
武装你的WEBAPI-OData聚合查询
OData WebAPI实践-OData与EDM
OData WebAPI实践-Non-EDM模式