Python獲取虎牙平臺主播照片, 實現顏值檢測, 進行排名

来源:https://www.cnblogs.com/Qqun261823976/archive/2022/08/15/16588783.html
-Advertisement-
Play Games

前言 嗨嘍~大家好呀,這裡是魔王吶 ! 在這平凡的一日,我決定~ 乾一件平凡的事~讓我們開動起我們的小手 來做一個小小的顏值檢測叭~ 開發環境: Python 3.8 Pycharm 2021.2 模塊使用: requests >>> pip install requests tqdm >>> pi ...


前言

嗨嘍~大家好呀,這裡是魔王吶 !

在這平凡的一日,我決定~

乾一件平凡的事~讓我們開動起我們的小手

 

 

來做一個小小的顏值檢測叭~

 

 

開發環境:

  • 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=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

 

我弄的前十的排名數據,你們的可以自己修改哦~

 

 

讓我們來看一看前十小姐姐的顏值吧~

系統檢測顏值前十

 

 

 

 

 

 

 

 

咋到後面成這樣了!!!! 懷疑人生。。。。

終究是我跟不上時代了~

 

 

我不信這個邪,我要繼續,啊啊啊啊啊


 

 

 

 

終於有一個小姐姐不錯的了,嗚嗚嗚,太難了~

 

 

 

 

我喜歡的小姐姐

前面出現過的我這裡不會出現哦~(即使我認為好看,嘿嘿嘿)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

還有一些我就不發出來了~你們自己去看叭

尾語

人的一生就像在攀登高峰,勤奮是你踏實穩健的雙腳,

信念是你指引前行的嚮導,勇敢是你孜孜追尋的恆心。

開心日到了,願你站穩雙腳,確定方向,向著你的理想巔峰勇敢前行,

不用怕,未來就在你的腳下。

—— 心靈雞湯

本文章到這裡就結束啦~希望這篇文章你喜歡,歡迎大家評論區討論哦

您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 本文是深入淺出 ahooks 源碼系列文章的第六篇,該系列已整理成文檔-地址。覺得還不錯,給個 star 支持一下哈,Thanks。 本文已收錄到個人博客中,歡迎關註~ 背景 大家在使用 useEffect 的時候,假如回調函數中使用 async...await... 的時候,會報錯如下。 看報錯, ...
  • 最近開發一款導航的項目需要行駛方向,這裡一般是gps會給我返回航向的,但是公司老系統的資料庫沒有這個數據,就只能自己計算咯 getAngle(lng_a,lat_a, lng_b, lat_b){ var a = (90 - lat_b) * Math.PI / 180; var b = (90 - ...
  • 一.簡介: 本文將完成一個真實業務中的設備上報數據的一個例子,完整的展示後臺服務接收到設備上報的數據後,將數據添加到時序資料庫,並且將數據查詢出來的一個例子。本文所有代碼已經上傳GitHub:https://github.com/Tom-shushu/work-study 下的 iotdb-demo ...
  • 文件的創建: package file; import java.io.File; import java.io.IOException; /* create:創建 new:新 file:文件 使用File新建一個文件 / public class CreateNewFileDemo { publi ...
  • 目錄 一.簡介 二.效果演示 三.源碼下載 四.猜你喜歡 零基礎 OpenGL (ES) 學習路線推薦 : OpenGL (ES) 學習目錄 >> OpenGL ES 基礎 零基礎 OpenGL (ES) 學習路線推薦 : OpenGL (ES) 學習目錄 >> OpenGL ES 轉場 零基礎 O ...
  • Python爬蟲之xpath語法及案例使用 鋼鐵俠的知識庫 2022.08.15 我們在寫Python爬蟲時,經常需要對網頁提取信息,如果用傳統正則表達去寫會增加很多工作量,此時需要一種對數據解析的方法,也就是本章要介紹的Xpath表達式。 Xpath是什麼 XPath,全稱 XML Path La ...
  • Java集合04 9.Set介面方法 Set介面基本介紹 無序(添加和取出的順序不一致),沒有索引 不允許重覆元素,所以最多只有一個null JDK API中介面的實現類有: Set介面的常用方法:和List介面一樣,Set介面也是Collection的子介面,因此,常用方法和Collection接 ...
  • 4、Fixture的相互調用 示例: import pytest # 第一層fixture @pytest.fixture() def fixture_1(): data = "fixture_1" print("這是第一層fixture") return data # 第二層fixture @py ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...