Python获取虎牙平台主播照片, 实现颜值检测, 进行排名

前言

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

在这平凡的一日,我决定~

干一件平凡的事~让我们开动起我们的小手

来做一个小小的颜值检测叭~

开发环境:

  • Python 3.8

  • Pycharm 2021.2

模块使用:

  • requests >>> pip install requests

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

  • os

  • base64

本次分为两部分:

第一部分 采集主播照片数据

第二部分 实现颜值检测 进行排名

基本流程思路:

一. 数据来源分析:

1、明确需求, 采集那个网站上面什么数据

2、通过开发者工具进行抓包分析, 分析我们想要照片数据来源

  • F12 或者 鼠标右键点击检查 选择 network 打开

二. 代码实现步骤:

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

2、获取数据, 获取服务器返回响应数据 ---> 开发者工具当中 response

3、解析数据, 提取我们想要数据内容 图片url 以及 主播名字

4、保存数据, 照片图片保存本地

代码

44.gif

导入模块

# 导入数据请求模块  --> 第三方模块 需要 在cmd里面 pip install requests
import requests
# 导入格式化输出模块 ---> 内置模块 不需要安装
from pprint import pprint
import base64
import os
from tqdm import tqdm

采集图片

"""
1. 发送请求, 模拟浏览器对于url地址发送请求
    - 当你请求url地址, 是长链接的时候, 我们是可以分段写
        https://www..com/cache.php?
        m=LiveList&do=getLiveListByPage&gameId=2168&tagAll=0&callback=getLiveListJsonpCallback&page=2
     - 如何实现批量替换
        选中替换的内容, 输入 ctrl + r 输入正则命令
        (.*?): (.*)
        '$1': '$2',
    - 模拟伪装浏览器 ---> 请求头参数 可以直接在开发者工具里面进行复制

    - 加文章下方老师VX
        1. 领取python常用单词词汇汇总
        2. 领取一个插件 翻译插件

    - 等号左边都是属于自定义变量, 你自己定义变量
        - 不能以数字开头
        - 不推荐使用关键字命名
        - 最好是见明知意
"""
# 确定请求url地址
url = 'https://www..com/cache.php'
# 请求参数 ---> 字典数据类型, 构建完整键值对形式
data = {
    'm': 'LiveList',
    'do': 'getLiveListByPage',
    'gameId': '2168',
    'tagAll': '0',
    # 'callback': 'getLiveListJsonpCallback',
    'page': '2',
}
# 模拟浏览器 ---> 请求头
headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/101.0.0.0 Safari/537.36'
}
# 发送请求 --->  <Response [200]> 响应对象 200状态码表示请求成功
response = requests.get(url=url, params=data, headers=headers)
"""
2. 获取数据, 获取服务器返回响应数据
    response.text 获取文本数据 ---> 字符串数据类型

    为了更加方便提取数据, 可以获取json字典数据
        如果你想要获取json数据, 但是请求参数里面有 callback 可以删除 callback
    response.json() 获取json数据 ---> 字典数据类型

3. 解析数据, 提取我们想要数据内容
    - 当你的数据是字典数据, 可以使用pprint模块 进行格式化输出打印, 效果更好
        如果你print打印字典数据, 呈现一行
        如果你pprint打印字典数据, 呈现多行, 展开的效果 更加方便取值

    - 字典取值 ---> 键值对取值, 根据冒号左边的内容[键], 提取冒号右边的内容[值]
"""
# for循环遍历 一个一个提取列表里面元素
for index in response.json()['data']['datas']:
    # 获取名字
    name = index['nick']
    # 获取图片url
    img_url = index['screenshot'].split('?')[0]
    """
    4. 保存数据 ---> 对于图片url地址发送请求, 获取数据
        - FileNotFoundError: [Errno 2] No such file or directory: 'img知恩丶小晴天.jpg'
            没有文件夹 ---> 1. 手动创建  2. 自动创建
    """
    # 获取图片二进制数据
    img_content = requests.get(url=img_url, headers=headers).content
    # 保存数据内容
    with open('img' + name + '.jpg', mode='wb') as f:
        # 写入数据
        f.write(img_content)
    print(name, img_url)

颜值检测

def get_beauty(img_base64):
    # client_id 为官网获取的AK, client_secret 为官网获取的SK
    host = 'https://aip.baidubce.com/oauth/2.0/token'
    # 【官网获取的AK】 和 【官网获取的SK】 在百度云创建好应用之后, 就有的
    params = {
        'grant_type': 'client_credentials',
        'client_id': 'quXbPEiGM2bKK77NV2vwsd53',
        'client_secret': 'hRa4ox5WYLgU1cCm5bP2kU0GWnOqos76',
    }

    response = requests.get(url=host, params=params)
    # 获取 access_token 值
    access_token = response.json()['access_token']
    request_url = f"https://aip.baidubce.com/rest/2.0/face/v3/detect?access_token={access_token}"
    data = {
        # 传入图片 base64内容
        "image": img_base64,
        "image_type": "BASE64",
        "face_field": "beauty"
    }
    headers = {'content-type': 'application/json'}
    json_data = requests.post(request_url, data=data, headers=headers).json()
    try:
        beauty = json_data['result']['face_list'][0]['beauty']
        return beauty
    except:
        return '识别失败'


# img_file = open('img\\悦欣-玻璃.jpg', mode='rb')
# img_base64 = base64.b64encode(img_file.read())
# beauty = get_beauty(img_base64)
# print(f'颜值评分是:', beauty)
lis = []
files = os.listdir('img\\')
print('正在颜值检测中, 请稍后.......')

for file in tqdm(files[:10]):
    img_file = 'img\\' + file
    img = open(img_file, mode='rb')
    img_base64 = base64.b64encode(img.read())
    beauty = get_beauty(img_base64)
    name = file.split('.')[0]
    if beauty != '识别失败':
        dit = {
            '主播': name,
            '颜值': beauty,
        }
        lis.append(dit)

lis.sort(key=lambda x:x['颜值'], reverse=True)
num = 1
for li in lis:
    print(f'颜值排名第{num}的是: {li["主播"]}, 颜值评分是{li["颜值"]}')
    num += 1

我弄的前十的排名数据,你们的可以自己修改哦~

让我们来看一看前十小姐姐的颜值吧~

系统检测颜值前十

咋到后面成这样了!!!! 怀疑人生。。。。

终究是我跟不上时代了~

我不信这个邪,我要继续,啊啊啊啊啊


终于有一个小姐姐不错的了,呜呜呜,太难了~

我喜欢的小姐姐

前面出现过的我这里不会出现哦~(即使我认为好看,嘿嘿嘿)

还有一些我就不发出来了~你们自己去看叭

尾语

人的一生就像在攀登高峰,勤奋是你踏实稳健的双脚,

信念是你指引前行的向导,勇敢是你孜孜追寻的恒心。

开心日到了,愿你站稳双脚,确定方向,向着你的理想巅峰勇敢前行,

不用怕,未来就在你的脚下。

—— 心灵鸡汤

本文章到这里就结束啦~希望这篇文章你喜欢,欢迎大家评论区讨论哦😝

对啦!!记得三连哦~ 💕 另外,欢迎大家阅读我往期的文章呀~

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 205,033评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,725评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,473评论 0 338
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,846评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,848评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,691评论 1 282
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,053评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,700评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 42,856评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,676评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,787评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,430评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,034评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,990评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,218评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,174评论 2 352
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,526评论 2 343

推荐阅读更多精彩内容