python對英雄皮膚進行圖片採集~

專注的阿熊發表於2022-08-03

# 匯入資料請求模組   ---> 第三方模組 需要 在 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 =跟單網gendan5.com 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)


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69946337/viewspace-2908848/,如需轉載,請註明出處,否則將追究法律責任。

相關文章