python對王者榮耀英雄皮膚進行圖片採集~

来源:https://www.cnblogs.com/Qqun261823976/archive/2022/07/26/16522249.html
-Advertisement-
Play Games

前言 嗨嘍~大家好呀,這裡是魔王吶 環境使用: Python 3.8 Pycharm 模塊使用: requests > 數據請求模塊 需要安裝 pip install requests re 正則表達式 內置模塊 不需要安裝 os 文件操作模塊 內置模塊 不需要安裝 --> 自動創建文件夾 把每個英 ...


前言

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

環境使用:

  • Python 3.8

  • Pycharm

模塊使用:

  • requests ---> 數據請求模塊 需要安裝 pip install requests

  • re 正則表達式 內置模塊 不需要安裝

  • os 文件操作模塊 內置模塊 不需要安裝 --> 自動創建文件夾 把每個英雄都自動創建對應文件

基本套路

一. 數據來源分析

  1. 確定需求, 確定採集目標

  2. 通過開發者工具抓包分析, 分析我們想要數據內容來自於那個url地址

  • F12 或者 滑鼠右鍵點擊檢查 選擇 network(網路) 刷新網頁

  • 去分析圖片url地址是什麼 ---> 選擇 Img 可以查找圖片url地址

505 表示英雄ID

2 皮膚第幾個 ---> 通過皮膚名字對應他的皮膚鏈接

想要獲取 yao 皮膚數據

  1. 向網址發送請求
  2. 獲取response響應數據
  3. 提取皮膚名字
  4. 構建 皮膚 url地址
  5. 保存數據

二. 代碼實現步驟

  1. 發送請求, 模擬瀏覽器對於url地址發送請求
  2. 獲取數據, 獲取伺服器返迴響應數據
  3. 解析數據, 提取我們想要內容, 皮膚名字
  4. 保存數據, 數據保存本地

代碼

# 導入數據請求模塊  ---> 第三方模塊 需要 在cmd裡面進行安裝 pip install requests
import requests
# 導入正則模塊  ---> 內置模塊 不需要安裝
import re
# 導入文件操作模塊  ---> 內置模塊 不需要安裝
import os

# 確定網址
link = 'https://pvp.qq.com/web201605/js/herolist.json'
# 模擬偽裝瀏覽器 ---> 請求頭
headers = {
    # user-agent 用戶代理 表示瀏覽器基本身份標識
    'user-agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/101.0.0.0 Safari/537.36'
}
# 發送請求
json_data = requests.get(url=link, headers=headers).json()
# for迴圈遍歷
for index in json_data:
    # 字典鍵值對取值 根據冒號左邊的內容[鍵],提取冒號右邊的內容[值]
    hero_id = index['ename']
    hero_name = index['cname']
    # 設定文件夾路徑 相對路徑
    file = f'img\\{hero_name}\\'
    if not os.path.exists(file):
        os.makedirs(file)
    """
    1. 發送請求, 模擬瀏覽器對於url地址發送請求
        - headers 字典數據類型, 構建完整鍵值對
        - 請求頭參數 可以直接在開發者工具複製粘貼
        - 使用什麼請求方法, 根據開發者工具來
    """
    # 確定請求url地址
    url = f'https://pvp.qq.com/web201605/herodetail/{hero_id}.shtml'
    # 模擬偽裝瀏覽器 ---> 請求頭
    headers = {
        # user-agent 用戶代理 表示瀏覽器基本身份標識
        '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]> 響應對象: <>表示對象 response 響應回覆 200 狀態碼 表示請求成功
    response = requests.get(url=url, headers=headers)
    # 亂碼了 怎麼辦? ---> 你要根據網頁編碼來 response.encoding = 'gbk'
    # 自動識別編碼
    response.encoding = response.apparent_encoding
    # 獲取數據, 獲取伺服器返迴響應數據 文本數據 print(response.text)
    """
    解析數據 re正則  會1 不會2
        re.findall()  從什麼地方 去找什麼數據
        從 response.text 裡面 去找 data-imgname="(.*?)"> 其中 (.*?) 就是我們要的數據
    """
    title_list = re.findall('data-imgname="(.*?)">', response.text)[0]
    # 鹿靈守心&0|森&0|遇見神鹿&71|時之祈願&94|時之願境&42
    title_list = re.sub('&\d+', '', title_list).split('|')
    print(title_list)
    # for迴圈 for num in range(1, 6): len() 統計列表元素個數
    for num in range(1, len(title_list) +1):
        # 列表取值, 根據索引位置,索引位置從0開始計數
        img_name = title_list[num-1]
        # 構建圖片url地址
        img_url = f'https://game.gtimg.cn/images/yxzj/img201606/skin/hero-info/{hero_id}/{hero_id}-bigskin-{num}.jpg'
        print(img_name, img_url)
        # 保存數據 ---> 發送請求 獲取數據 二進位數據
        img_content = requests.get(url=img_url, headers=headers).content
        with open(file + img_name + '.jpg', mode='wb') as f:
            f.write(img_content)

 

 

 

 

 

 

 

 

 

 


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

-Advertisement-
Play Games
更多相關文章
  • 需求: el-form 每行顯示兩列,底部按鈕居中 問題: 以前的解決辦法是: el-col, el-row。但是這裡只有一個 el-form-item 的 label 數據是已知的,其餘項都是迴圈得到的,數量不固定,因此不能採用 el-col 方式。 嘗試 嘗試過 item 左浮動,flex,底部 ...
  • 需求 1 :設置初始高亮 子組件: 父組件 需求 2 :高亮行的變化,需要把數據傳遞到兄弟組件中 解決辦法:EventBus 參考鏈接: http://t.csdn.cn/iwOJc main.js 中: 子組件 1 : 子組件 2 : 需求 3 :子組件把高亮行的 index 和表格總條數傳遞給父 ...
  • 從ES6開始增加了Promise類型,稱為了主導性的非同步編程機制。 期約Promise是一個有狀態的對象,可能處於如下三種狀態之一: 待定(pending) 兌現(fulfilled,或被稱為“解決”,resolved) 拒絕(rejected) pending是期約的最初始狀態。在這個狀態下,pr ...
  • 互聯網協議 1.C/S B/S 架構 client 基於網路通信 server browser 基於網路通信 server server端必須滿足的條件: 1. 穩定運行(網路. 硬體. 操作系統. 服務端軟體) 2. 服務端必須綁定一個固定的地址 2.什麼是互聯網 兩大要素: 1. 底層的物理鏈接 ...
  • 面向對象編程(中級) 筆記目錄:(https://www.cnblogs.com/wenjie2000/p/16378441.html) lntelliJ IDEA ●IDEA介紹(內容僅需瞭解) IDEA全稱Intelli IDEA 在業界被公認為最好的Java開發工具 IDEA是JetBrain ...
  • Lambda 表達式(lambda expression)是一個匿名函數,Lambda表達式基於數學中的λ演算得名,直接對應於其中的lambda抽象(lambda abstraction),是一個匿名函數,即沒有函數名的函數。Lambda表達式可以表示閉包(註意和數學傳統意義上的不同)。 閉包就是能... ...
  • 總結 這場表演邀請了三位角色:run.sh、main.py、path.sh,拍攝場地選在了 Windows -> Git Bash 群演1號 run.sh #!/usr/bin bash . ./path.sh || exit -1 # demo.py無法直接找到是因為 $PATH中已經沒有 工作目 ...
  • Java方法01 1.什麼是方法? Java是語句的集合,它們在一起執行一個功能 方法是解決一類問題的步驟的有序集合 方法包含於類或者對象中 方法在程式中被創建,在其他地方被引用 設計方法的原則:方法的本意是功能塊,就是實現某個功能的語句塊的集合。我們設計方法的時候,最好保持方法的==原子性,就是一 ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...