Python批量下载主播照片,实现人脸识别, 进行颜值评分,制作颜值排行榜

嗨喽,大家好呀~这里是爱看美女的茜茜呐

昨晚一回家,表弟就神神秘秘的跟我说:

发现一个高颜值网站,非要拉着我研究一下她们的颜值高低。

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

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

这不比手动快多了~

照片采集部分

流程思路
  1. 分析 主播照片 能够去哪里获取到 <开发者工具抓包分析图片数据来源>

    • 打开开发者工具: F12

    • 刷新网页

    • 点击 Img 查看图片链接地址

    • 通过关键字去搜索图片所对应的数据包

  2. 在这个链接里面就有想要图片数据内容

    • 发送请求, 模拟浏览器对于url地址发送请求

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

    • 解析数据, 提取我们想要的内容 图片url 和 主播名字

    • 保存数据, 把图片数据内容保存本地文件夹里面

代码展示

导入数据请求模块

import requests

如何安装python第三方模块:

  1. win + R 输入 cmd 点击确定, 输入安装命令 pip install 模块名 (pip install requests) 回车

  2. 在pycharm中点击Terminal(终端) 输入安装命令

“”"

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

“”"

模拟浏览器 headers 请求头 --> 字典数据类型, 构建完整键值对

'''
python资料获取看这里噢!! 小编 V:Pytho8987(记得好友验证备注:6  笔芯~)
即可获取:文章源码/教程/资料/解答等福利,还有不错的视频学习教程和PDF电子书!
'''
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.某牙.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循环遍历提取内容

'''
python资料获取看这里噢!! 小编 V:Pytho8987(记得好友验证备注:6  笔芯~)
即可获取:文章源码/教程/资料/解答等福利,还有不错的视频学习教程和PDF电子书!
'''
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

代码部分
'''
python资料获取看这里噢!! 小编 V:Pytho8987(记得好友验证备注:6  笔芯~)
即可获取:文章源码/教程/资料/解答等福利,还有不错的视频学习教程和PDF电子书!
'''
import time
# encoding:utf-8
import requests
import base64
from pprint import pprint
import os
from tqdm import tqdm
 
 
def Score(file):
    # client_id 为官网获取的AK, client_secret 为官网获取的SK
    host = 'https://aip.某度.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.某度.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
效果展示

好了文章内容就分享到这里,文章不理解的话,我还录制了对应的视频讲解,和代码一起打包好了。直接名片扫码领取。

尾语

感谢你观看我的文章呐~本次航班到这里就结束啦 🛬

希望本篇文章有对你带来帮助 🎉,有学习到一点知识~

躲起来的星星🍥也在努力发光,你也要努力加油(让我们一起努力叭)。

最后,宣传一下呀~👇👇👇更多源码、资料、素材、解答、交流皆点击下方名片获取呀👇👇

  • 16
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值