翼度科技»论坛 编程开发 python 查看内容

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

3

主题

3

帖子

9

积分

新手上路

Rank: 1

积分
9
昨晚一回家,表弟就神神秘秘的跟我说,发现一个高颜值网站,非要拉着我研究一下她们的颜值高低。
我心想,这还得要我一个个慢慢看,太麻烦了~
于是反手用Python给他写了一个人脸识别代码,把她们的照片全部爬下来,自动检测颜值打分排名。
这不比手动快多了?
准备工作

开发环境

  • Python 3.8
  • Pycharm
模块使用

  • requests >>> pip install requests
  • tqdm >>> pip install tqdm 简单实现进度条效果
  • os 文件操作
  • base64
照片采集部分

流程思路

  • 明确需求:
    分析 主播照片 能够去哪里获取到

    • 打开开发者工具: F12
    • 刷新网页
    • 点击 Img 查看图片链接地址
    • 通过关键字去搜索图片所对应的数据包

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

    • 发送请求, 模拟浏览器对于url地址发送请求
    • 获取数据, 获取服务器返回响应数据
    • 解析数据, 提取我们想要的内容 图片url 和 主播名字
    • 保存数据, 把图片数据内容保存本地文件夹里面

代码展示
  1. # 导入数据请求模块
  2. import requests
  3. """
  4. 发送请求, 模拟浏览器对于url地址发送请求
  5. """
  6. # 模拟浏览器  headers 请求头 --> 字典数据类型, 构建完整键值对
  7. headers = {
  8.     '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'
  9. }
  10. # 请求链接
  11. url = 'https://www.huya.com/cache.php?m=LiveList&do=getLiveListByPage&gameId=1663&tagAll=0&page=2'
  12. # 发送请求
  13. # 调用requests模块里面get请求方法, 对于url地址发送请求并且携带上headers请求头伪装, 最后用response变量接受返回数据
  14. response = requests.get(url=url, headers=headers)
  15. # <Response [200]> 响应对象, 200状态码表示请求成功
  16. print(response)
  17. """
  18. - 获取数据, 获取服务器返回响应数据
  19.     response.text 获取响应文本数据 <字符串数据>
  20.     response.json() 获取响应json字典数据 <字典数据>
  21. - 解析数据, 提取我们想要的内容 图片url 和 主播名字
  22.     解析数据方法选择, 是根据返回数据内容来的
  23.         键值对取值 <字典取值>
  24. """
  25. # for循环遍历提取内容
  26. for index in response.json()['data']['datas']:
  27.     # 照片
  28.     img = index['screenshot']
  29.     # 名字
  30.     name = index['nick']
  31.     """
  32.     保存数据
  33.     """
  34.     content = requests.get(url=img, headers=headers).content
  35.     with open('img\\' + name + '.jpg', mode='wb') as f:
  36.         f.write(content)
  37.     print(name, img)
复制代码
采集到的照片

评分排名部分

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

  • 百度云API接口 --> 有现成文档代码
  • 通过文档提供代码 先获取 access_token
代码部分
  1. import time
  2. # encoding:utf-8
  3. import requests
  4. import base64
  5. from pprint import pprint
  6. import os
  7. from tqdm import tqdm
  8. # 文章不理解的话,我还录制了对应的视频讲解,和代码一起打包好了。<br># 都放在这个q裙了:708525271<br>
  9. def Score(file):
  10.     # client_id 为官网获取的AK, client_secret 为官网获取的SK
  11.     host = 'https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials&client_id=官网获取的AK&client_secret=官网获取的SK'
  12.     response = requests.get(host)
  13.     access_token = response.json()['access_token']
  14.     '''
  15.     人脸检测与属性分析
  16.     '''
  17.     # 读取一下图片数据
  18.     f = open(file, mode='rb')
  19.     # 转成 BASE64格式
  20.     img_base = base64.b64encode(f.read())
  21.     request_url = "https://aip.baidubce.com/rest/2.0/face/v3/detect"
  22.     params = {
  23.         # 传入图片BASE64格式
  24.         "image":img_base,
  25.         # 指定图片数据类型
  26.         "image_type": "BASE64",
  27.         # 检测类型 检测颜值评分
  28.         "face_field": "beauty"
  29.     }
  30.     request_url = request_url + "?access_token=" + access_token
  31.     headers = {'content-type': 'application/json'}
  32.     json_data = requests.post(request_url, data=params, headers=headers).json()
  33.     # KeyError: 'result' 因为识别失败了
  34.     try:
  35.         num = json_data['result']['face_list'][0]['beauty']
  36.         # print('颜值分数是:', num)
  37.         return num
  38.     except:
  39.         return '识别失败'
  40. lis = []
  41. # 读取文件路径
  42. files = os.listdir('img\\')
  43. print('正在颜值检测中, 请稍后......')
  44. for file in tqdm(files):
  45.     time.sleep(0.5)
  46.     filename = f'img\\{file}'
  47.     # 主播名字
  48.     name = file.split('.')[0]
  49.     # 评分
  50.     num = Score(file=filename)
  51.     if num != '识别失败':
  52.         dit = {
  53.             '主播': name,
  54.             '颜值': num
  55.         }
  56.         lis.append(dit)
  57. lis.sort(key=lambda x:x['颜值'], reverse=True)
  58. page = 1
  59. for li in lis:
  60.     print(f'颜值排名第{page}的是{li["主播"]}, 颜值评分是{li["颜值"]}')
  61.     page += 1
复制代码
 
效果展示

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

来源:https://www.cnblogs.com/hahaa/p/17582636.html
免责声明:由于采集信息均来自互联网,如果侵犯了您的权益,请联系我们【E-Mail:cb@itdo.tech】 我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x

举报 回复 使用道具