首页 > 编程语言 >Python采集主播照片,实现人脸识别, 进行颜值评分,制作颜值排行榜

Python采集主播照片,实现人脸识别, 进行颜值评分,制作颜值排行榜

时间:2023-07-26 15:46:08浏览次数:49  
标签:人脸识别 img headers Python 颜值 url requests 主播

昨晚一回家,表弟就神神秘秘的跟我说,发现一个高颜值网站,非要拉着我研究一下她们的颜值高低。

我心想,这还得要我一个个慢慢看,太麻烦了~

于是反手用Python给他写了一个人脸识别代码,把她们的照片全部爬下来,自动检测颜值打分排名。

这不比手动快多了?

准备工作

开发环境

  • Python 3.8
  • Pycharm

模块使用

  • requests >>> pip install requests
  • tqdm >>> pip install tqdm 简单实现进度条效果
  • os 文件操作
  • base64

照片采集部分

流程思路

  1. 明确需求:
    分析 主播照片 能够去哪里获取到 <开发者工具抓包分析图片数据来源>
    • 打开开发者工具: F12
    • 刷新网页
    • 点击 Img 查看图片链接地址
    • 通过关键字去搜索图片所对应的数据包
  2. 在这个链接里面就有想要图片数据内容
    • 发送请求, 模拟浏览器对于url地址发送请求
    • 获取数据, 获取服务器返回响应数据
    • 解析数据, 提取我们想要的内容 图片url 和 主播名字
    • 保存数据, 把图片数据内容保存本地文件夹里面

代码展示

# 导入数据请求模块
import requests
"""
发送请求, 模拟浏览器对于url地址发送请求
"""
# 模拟浏览器  headers 请求头 --> 字典数据类型, 构建完整键值对
headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/113.0.0.0 Safari/537.36'
}
# 请求链接
url = 'https://www.huya.com/cache.php?m=LiveList&do=getLiveListByPage&gameId=1663&tagAll=0&page=2'
# 发送请求
# 调用requests模块里面get请求方法, 对于url地址发送请求并且携带上headers请求头伪装, 最后用response变量接受返回数据
response = requests.get(url=url, headers=headers)
# <Response [200]> 响应对象, 200状态码表示请求成功
print(response)
"""
- 获取数据, 获取服务器返回响应数据
    response.text 获取响应文本数据 <字符串数据>
    response.json() 获取响应json字典数据 <字典数据>

- 解析数据, 提取我们想要的内容 图片url 和 主播名字
    解析数据方法选择, 是根据返回数据内容来的
        键值对取值 <字典取值>
"""
# for循环遍历提取内容
for index in response.json()['data']['datas']:
    # 照片
    img = index['screenshot']
    # 名字
    name = index['nick']
    """
    保存数据
    """
    content = requests.get(url=img, headers=headers).content
    with open('img\\' + name + '.jpg', mode='wb') as f:
        f.write(content)
    print(name, img)

采集到的照片

评分排名部分

对于照片内容进行人脸检测, 颜值评分:

  1. 百度云API接口 --> 有现成文档代码
  2. 通过文档提供代码 先获取 access_token

代码部分

import time
# encoding:utf-8
import requests
import base64
from pprint import pprint
import os
from tqdm import tqdm
# 文章不理解的话,我还录制了对应的视频讲解,和代码一起打包好了。
# 都放在这个q裙了:708525271
def Score(file): # 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) access_token = response.json()['access_token'] ''' 人脸检测与属性分析 ''' # 读取一下图片数据 f = open(file, mode='rb') # 转成 BASE64格式 img_base = base64.b64encode(f.read()) request_url = "https://aip.baidubce.com/rest/2.0/face/v3/detect" params = { # 传入图片BASE64格式 "image":img_base, # 指定图片数据类型 "image_type": "BASE64", # 检测类型 检测颜值评分 "face_field": "beauty" } request_url = request_url + "?access_token=" + access_token headers = {'content-type': 'application/json'} json_data = requests.post(request_url, data=params, headers=headers).json() # KeyError: 'result' 因为识别失败了 try: num = json_data['result']['face_list'][0]['beauty'] # print('颜值分数是:', num) return num except: return '识别失败' lis = [] # 读取文件路径 files = os.listdir('img\\') print('正在颜值检测中, 请稍后......') for file in tqdm(files): time.sleep(0.5) filename = f'img\\{file}' # 主播名字 name = file.split('.')[0] # 评分 num = Score(file=filename) if num != '识别失败': dit = { '主播': name, '颜值': num } lis.append(dit) lis.sort(key=lambda x:x['颜值'], reverse=True) page = 1 for li in lis: print(f'颜值排名第{page}的是{li["主播"]}, 颜值评分是{li["颜值"]}') page += 1

 

效果展示


好了文章内容就分享到这里,下次见~

 

标签:人脸识别,img,headers,Python,颜值,url,requests,主播
From: https://www.cnblogs.com/hahaa/p/17582636.html

相关文章

  • 安装easy_install 和ipython
    从链接http://pypi.python.org/pypi/setuptools#downloads处获得相应的版本运行shsetuptools-0.6c9-py2.4.egg(跟用户权限,若没有可以指定--prefix=~)安装完毕对python2.6可运行下面代码:#!/bin/bash#wgethttp://pypi.python.org/packages/2.6/s/......
  • python 读取文件夹
    importos#返回一个列表['01.xlsx','EE_reg.txt','EEData.txt','ERENR.txt','ER-25.txt']file_names=os.listdir('D:\\yuyu\\test_yuyu\\accessibility_1\\APP_Employer_EE_Enrolment')file=op......
  • python通过SSE与html主动通讯
    博客:使用Python通过SSE与HTML实现主动通讯在现代Web应用中,实时性和交互性成为了越来越重要的需求。服务器向客户端主动推送数据,而不是等待客户端发送请求,就是一种实现实时通讯的方式。Server-SentEvents(SSE)正是一种用于实现这种服务器主动推送的技术。本文将介绍如何使......
  • Python做成计划任务
    将Python脚本转换为可执行文件(.exe文件)&把一个Python脚本注册为windows服务-陈致远大侠-博客园(cnblogs.com)书再接上回,为这样一个小项目花这么大力气,弄这么大阵仗不是我的处事风格。所以只好转战计划任务了。计划任务也是不支持直接运行python,示例如下:......
  • [爬虫]2.3.1 使用Python操作文件系统
    Python提供了许多内置库来处理文件系统,如os、shutil和pathlib等,这些库可以帮助你创建、删除、读取、写入文件和目录。读取文件在Python中,你可以使用内置的open函数来打开一个文件。open函数返回一个文件对象,你可以对这个对象进行各种操作。以下是一个读取文件的例子:withopen(......
  • 如何用python做一个exe程序快速爬取文章?
    我用了99藏书网作为例子九九藏书网(99csw.com)注:本程序主要用于快速复制99藏书网中的小说,有些参数我要在开头先解释清楚 一、导入库importtkinterastkfromseleniumimportwebdriverfromselenium.webdriver.common.byimportByfromselenium.webdriver.common.a......
  • python实现自动切换壁纸(win10)
    因为本人工作环境特殊,很多软件的下载很麻烦,而且违规。然后发现域策略有变更,之前貌似不可以自己换壁纸。我是一个对任何重复的事物都十分容易腻的人,壁纸也包括在内,所以决定写一个自动切换壁纸的脚本importosimportctypesimporttimefromdatetimeimportdatetime#放......
  • Linux版python安装教程
    如果你希望在CentOS上使用源码编译的方式安装Python3,请按照以下步骤进行操作:安装编译工具和依赖项:在开始编译前,需要安装一些编译工具和Python3的依赖项。在终端中运行以下命令:sudoyumgroupinstall"DevelopmentTools"sudoyuminstallopenssl-develbzip2-devel......
  • python学习01:Python基础语法与数据类型
    一、Python注释通常用于解释代码,这段打开主要是想表达什么意思,注释后的代码不会再代码中运行,例如:#打印HelloWorldprint("HelloWorld")注释的方式:#python注释(快捷键:Ctrl+/(选中你想注释的代码就可全部注释掉))=========>单行注释''''print('hello') ''''''�......
  • python logurur日志用法记录
    importsysfromloguruimportloggerlogger.configure(handlers=[{"sink":sys.stderr,"format":"{time:YYYY-MM-DDHH:mm:ss.SSS}|<lvl>{level:8}</>|{name}:{module}:{line:4}|<cyan>mymodu......