Python简单实现人脸识别检测, 对某平台美女主播照片进行评分排名

news2024/10/2 12:21:01

前言

嗨喽~大家好呀,这里是魔王呐 ❤ ~!

开发环境:

  • Python 3.8

  • Pycharm 2021.2

模块使用:

第三方模块

  • requests >>> pip install requests

  • tqdm >>> pip install tqdm 简单实现进度条效果

自带模块

  • os

  • base64

采集代码

导入模块

# 数据请求模块 --> 第三方模块 需要安装 pip install requests
import requests
import base64
from pprint import pprint
import os
from tqdm import tqdm

“”"

1. 发送请求, 模拟浏览器对url地址发送请求

  • 模拟浏览器: 请求头 headers

    字典数据类型, 一定要构建完成键值对

多页数据采集 --> 分析请求url 请求参数变化规律

“”"

for page in range(1, 13):
    print(f'==================正在采集第{page}页的数据内容==================')
    # 请求url地址 <复制>
    url = f'https://www.网站.com/cache.php?m=LiveList&do=getLiveListByPage&gameId=1663&tagAll=0&page={page}'
    # 模拟伪装 <复制>
    headers = {
        # User-Agent 用户代理 表示浏览器基本身份信息
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/101.0.0.0 Safari/537.36'
    }

🎯 博主所有文章素材、解答、源码领取处:点击

发送请求

调用requests模块里面get请求方法对于url地址发送请求, 并且携带上headers请求头伪装, 最后用自定义变量response接收返回数据

    response = requests.get(url=url, headers=headers)
    # <Response [200]> 响应对象, 表示请求成功
    print(response)

2. 获取数据, 获取服务器返回响应数据

开发者工具 --> response

response.json() 获取响应json字典数据, 返回的数据必须是完整json数据格式

当你遇到 simplejson.errors.JSONDecodeError: Expecting value: line 1 column 1 (char 0)

解决方法:

  1. 先获取文本数据 response.text

    目的看一下我返回数据是什么样子的 <得到数据了呢, 还是得到数据有问题呢>

  2. 当你看到返回的数据 getLiveListJsonpCallback(里面字典样子花括号)

    把链接里面 Callback参数删掉

3. 解析数据, 提取我们想要的数据内容

  • 主播名字

  • 主播照片url

response.json() --> 字典数据类型

根据键值对取值: 根据冒号左边的内容[键], 提取冒号右边的内容[值]

    # for循环遍历, 把列表里面元素一个一个提取出来
    for index in response.json()['data']['datas']:
        # 提取主播名字
        name = index['nick']
        # 提取照片
        img_url = index['screenshot']

“”"

4. 保存数据, 把图片保存本地文件夹

发送请求 img_url , 获取数据 获取二进制数据

response.content 获取响应二进制数据

图片/音频/视频/特定格式文件 —> 获取二进制数据进行保存

只要可以得到数据, 实现效果, 过程不重要

D:\自游\颜值检测\img\

\ 转义字符 把含有特殊含义字符, 转义成除了字符本身以外, 不含有任何意义

“”"

        img_content = requests.get(url=img_url, headers=headers).content
        # 'img\\'<文件夹> + name<文件名> + '.jpg'<文件后缀>  wb 保存方式, 二进制保存
        with open('img\\' + name + '.jpg', mode='wb') as f:
            f.write(img_content)
        print(name, img_url)

效果

检测代码

🎯 博主所有文章素材、解答、源码领取处:点击

# 数据请求模块 --> 第三方模块 需要安装 pip install requests
import requests
import base64
from pprint import pprint
import os
from tqdm import tqdm
def beauty(img):
    '''
    现成复制的
    获取 access_token 值
    '''
    try:
        # client_id 为官网获取的AK, client_secret 为官网获取的SK
        host = ''

        response = requests.get(host)
        access_token = response.json()['access_token']
        '''
        人脸检测与属性分析
        '''
        # 读取文件内容 照片内容
        f = open(f'img\\{img}', mode='rb')
        # 读取出来文件 转成 base64 编码格式
        img_base64 = base64.b64encode(f.read())
        """
        现成API调用代码
        """
        request_url = ""
        params = {
            "image": img_base64,  # 需要传递 图片 base64
            "image_type": "BASE64",
            "face_field": "beauty"
        }
        request_url = request_url + "?access_token=" + access_token
        headers = {'content-type': 'application/json'}

        response = requests.post(request_url, data=params, headers=headers)
        beauty = response.json()['result']['face_list'][0]['beauty']
        return beauty
    except:
        return '识别失败'


# 读取文件内容 或者 文件名字
lis = []
files = os.listdir('img\\')
print('正在进行颜值检测, 稍后.......')
for file in tqdm(files[100:200]):
    num = beauty(file)
    if num != '识别失败':
        title = file.split('.')[0]
        dit = {
            '主播': title,
            '颜值': num
        }
        lis.append(dit)

lis.sort(key=lambda x:x['颜值'], reverse=True)

i = 1
for li in lis:
    print(f'颜值排名第{i}的是{li["主播"]}, 颜值评分是{li["颜值"]}')
    i += 1

颜值检测效果

首先我们来搜一下第一名,看看长什么样吧

咳咳,那我们在来看一下最后一名,通常第一都是都点迷惑得~

按照的窝得经验之谈,一般七、八十分得长得都是还不错的~

我们来看看吧~







推荐往期文章

🎯 博主所有文章素材、解答、源码领取处:点击

对python感兴趣的小伙伴也可以看一下博主其他相关文章哦~

python小介绍:

python是什么?工作前景如何?怎么算有基础?爬数据违法嘛?。。

python数据分析前景:

用python分析“数据分析”到底值不值得学习,以及学完之后大概能拿到多少工资

python基础自测题:

Python 800 道习题 (°ー°〃) 测试你学废了嘛

最后推荐一套Python视频给大家,希望对大家有所帮助:

全套教程!你和大佬只有一步之遥【python教程】

尾语

好了,今天的分享就差不多到这里了!

要成功,先发疯,下定决心往前冲!

学习是需要长期坚持的,一步一个脚印地走向未来!

未来的你一定会感谢今天学习的你。

—— 心灵鸡汤

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/7481.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

vue封装的echarts组件被同一个页面多次引用无法正常显示问题(已解决)

问题&#xff1a;第二张图显示空白&#xff0c;折线图并没有展示出来 当我们在封装了echarts组件之后&#xff0c;需要在同一个页面中引入多次时&#xff0c;会出现数据覆盖等一系列问题 当时我是修改了id也无济于事&#xff0c;达不到我需要的效果 解决方案 将我们封装的组件…

HTML5简明教程系列之HTML5 表格与表单(二)

HTML的第二弹也来了&#xff0c;最近高产似母猪&#xff0c;状态也不错&#xff0c;代码来源为实验课。本期主要内容为&#xff1a;HTML表格与DIV应用、HTML表单。上期基础部分的传送门&#xff1a; HTML5简明教程系列之HTML5基础&#xff08;一&#xff09;_Thomas_Lbw的博客-…

【进程复制】

目录地址偏移量fork函数fork练习地址偏移量 PCB结构体&#xff1a; struct task_struct { PID ststus ; … } 页面的内存大小是固定的&#xff0c;不足一页会给一页&#xff0c;大于一页会给一个整页数 比如一页大小为4K&#xff0c;地址除4K商是页号&#xff0c;余数是在该页…

Vue(六)——使用脚手架(3)

目录 webStorage localStorage sessionStorage todolist案例中使用 组件自定义事件 绑定 解绑 总结 全局事件总线 消息发布与订阅 nextTick 过渡与动画 webStorage 这不是vue团队开发的&#xff0c;不需要写在xx.vue当中&#xff0c;只需写在xx.html当中即可。 什…

Linux下C++开发笔记--g++命令

目录 1--前言 2--开发环境搭建 3--g重要编译参数 4--实例 1--前言 最近学习在linux环境下进行C开发的基础知识&#xff0c;参考的教程是基于VSCode和CMake实现C/C开发 | Linux篇&#xff0c;非常适合小白入门学习。 2--开发环境搭建 ①安装gcc、g和gdb&#xff1a; sud…

深度学习入门(三十七)计算性能——硬件(TBC)

深度学习入门&#xff08;三十七&#xff09;计算性能——硬件&#xff08;CPU、GPU&#xff09;前言计算性能——硬件&#xff08;CPU、GPU&#xff09;课件电脑提升CPU利用率①提升CPU利用率②CPU VS GPU提升GPU利用率CPU/GPU带宽更多的CPU和GPUCPU/GPU高性能计算编程总结教材…

SpringBoot整合dubbo(一)

第一次整合&#xff0c;使用无注册中心方式 一、首先&#xff0c;项目分为三个模块&#xff0c;如下图&#xff0c;dubbo-interface&#xff08;要发布的接口&#xff09;、dubbo-provider&#xff08;接口的具体实现&#xff0c;服务提供者&#xff09;、dubbo-consumer&#…

【LeetCode-中等】63. 不同路径 II(详解)

题目 一个机器人位于一个 m x n 网格的左上角 &#xff08;起始点在下图中标记为 “Start” &#xff09;。 机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角&#xff08;在下图中标记为 “Finish”&#xff09;。 现在考虑网格中有障碍物。那么从左上角到…

VScode

VScode 下载 VScode&#xff1a;https://code.visualstudio.com/安装 汉化 Chinese (Simplified) 设置 背景色 Atom One Light Theme Color Theme 护眼色 "workbench.colorCustomizations": { // 设置背景颜色// "foreground": "#75a478",&…

List详解

一、List&#xff08;列表&#xff09; 基本的数据类型&#xff0c;列表 在redis中&#xff0c;通过相应操作可以让list变成栈、队列、阻塞队列&#xff01; 在redis中所有的list命令都是以 l 开头的 添加值 将一个值或多个值&#xff0c;插入到列表尾部&#xff08;右&…

深度学习之语义分割算法(入门学习)

>>>深度学习Tricks&#xff0c;第一时间送达<<< 目录 &#x1f4a1; 写在前面 一、前言 二、深度学习的图像分割分类 1.语义分割 2.实例分割 3.全景分割 三、语义分割的基本原理 四、语义分割的常用运算及评价指标 关于算法改进及论文投稿可关注并留…

【附源码】Python计算机毕业设计寿险公司保险业务管理系统

项目运行 环境配置&#xff1a; Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术&#xff1a; django python Vue 等等组成&#xff0c;B/S模式 pychram管理等等。 环境需要 1.运行环境&#xff1a;最好是python3.7.7&#xff0c;…

指令格式学习

计算机的指令格式与机器的字长、存储器的容量及指令的功能都有很大的关系。从便于程序设计、增加基本操作并行性、提高指令功能的角度来看&#xff0c;指令中应包含多种信息。但在有些指令中&#xff0c;由于部分信息可能无用&#xff0c;这将浪费指令所占的存储空间&#xff0…

python web服务windows管理工具

故事背景是这样的。。。 客户需要一些小工具&#xff0c;作为一名开发者&#xff0c;很容易的就写完了。但是呢&#xff0c;客户没有服务器&#xff0c;只能部署在windows上。由于不再一起&#xff0c;维护一个web程序&#xff0c;有时候会有些折腾&#xff0c;所以&#xff0…

Camunda 使用restapi

参考&#xff1a;http://camunda-cn.shaochenfeng.com/reference/rest/task/get-query/ 这里我就举一个流程的例子&#xff1a; 以下接口&#xff0c;除了端口和参数&#xff0c;其他无需改动 POM&#xff1a; rest 就是接口 webapp 是网页 <dependency><groupId&…

安全狗持续4年零失误实力守护金鸡颁奖典礼

11月10日-12日&#xff0c;第35届中国电影金鸡奖颁奖相关活动顺利在厦门举办。 如果用电影的方式回看他们这几天的重保值守任务的话&#xff0c;会是怎么样的? PART 1 背景交代 距离第一次接到此客户的任务&#xff0c;时间已经过去4年。今年这次任务的开启得让时间倒退到5天之…

el-tabs切换按钮定位不准确,部分内容被遮挡(前端vue实战踩坑记录)

在写项目的过程中&#xff0c;特别是vue项&#xff0c;我们最常用到的UI框架就是elementUI&#xff0c;现记录一个今天同事开发遇到的bug。 一、问题描述 页面跳转时&#xff0c;tabs切换按钮被遮挡展示不全&#xff0c;效果如图 正常情况下&#xff0c;右侧的用户后面的…应…

kotlin函数

一、Main函数 fun printHello() {println("Hello World")}printHello() Hello World在main的函数中&#xff0c;执行播放按钮&#xff0c;会编译执行&#xff0c;结果在下面显示&#xff1a; 1.1 Basic Task Create a new Kotlin file.Copy and paste the main()…

Java中方法的注意事项

C有函数&#xff0c;我们Java有方法&#xff01;实参和形参的关系方法重载public static早在初始Java的那一个博客&#xff0c;我好像就给兄弟们说过&#xff0c;在Java中我们把以前认识到的函数叫做是方法&#xff0c;那么如果单单是为了讲一下方法最基本的使用规则&#xff0…

如何从0-1学习渗透测试?

要成为一名渗透测试员&#xff0c;想从基础学习需要先掌握下面这3块&#xff1a;1、学习硬件和网络渗透测试主要涉及网络和部分涉及硬件。2、操作系统和系统架构操作系统和系统架构在渗透测试中起着关键作用。系统操作涉及x86&#xff08;32位&#xff09;和x64&#xff08;64位…