前言
嗨嘍~大家好呀,這里是魔王吶 !
在這平凡的一日,我決定~
干一件平凡的事~讓我們開動起我們的小手
來做一個小小的顏值檢測叭~
開發環境:
-
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、保存資料, 照片圖片保存本地
代碼
匯入模塊
# 匯入資料請求模塊 --> 第三方模塊 需要 在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=https://www.cnblogs.com/Qqun261823976/archive/2022/08/15/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
我弄的前十的排名資料,你們的可以自己修改哦~
讓我們來看一看前十小姐姐的顏值吧~
系統檢測顏值前十

咋到后面成這樣了!!!! 懷疑人生,,,,
終究是我跟不上時代了~
我不信這個邪,我要繼續,啊啊啊啊啊
終于有一個小姐姐不錯的了,嗚嗚嗚,太難了~
我喜歡的小姐姐
前面出現過的我這里不會出現哦~(即使我認為好看,嘿嘿嘿)
還有一些我就不發出來了~你們自己去看叭
尾語
人的一生就像在攀登高峰,勤奮是你踏實穩健的雙腳,
信念是你指引前行的向導,勇敢是你孜孜追尋的恒心,
開心日到了,愿你站穩雙腳,確定方向,向著你的理想巔峰勇敢前行,
不用怕,未來就在你的腳下,
—— 心靈雞湯
本文章到這里就結束啦~希望這篇文章你喜歡,歡迎大家評論區討論哦??
對啦!!記得三連哦~ ?? 另外,歡迎大家閱讀我往期的文章呀~
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/501895.html
標籤:其他
