最近總是有老妹喊我打王者帶她們上分,但是我吧不經常玩,有哪些皮膚,叫什么名字,長啥樣都不知道,萬一妹妹問起來答不上豈不是很尷尬!

這不得先把功課做足了,於是我用Python把這些皮膚全部給爬下來了!分享給大家一起做功課~

很多小伙伴因為在學習的過程中遇到很多問題沒人指導都解決不了,或者因為沒有好的學習資料學習路線,等等導致自己學不下去了,所以我准備了一個群,大家都可以加一下,里面都是志同道合的同學,這些資料也都是統統可以免費領取到,也會有老師不定時解答!點我加群免費領取
Python 環境、pycharm編輯器/永久激活/翻譯插件
python 零基礎視頻教程
Python 界面開發實戰教程
Python 爬蟲實戰教程
Python 數據分析實戰教程
python 游戲開發實戰教程
Python 電子書100本
Python 學習路線規划
都可以加群免費領取
Python 相關問題可解答
Python 相關外包需求可發布
Python 相關招聘需求可發布

先來看看今天要用到的
開發環境以及模塊使用
python 3.6 pycharm >>> 安裝包 / 安裝教程 / 激活碼[專業版] / pycharm插件 [翻譯插件] 強烈推薦 使用pycharm編輯器 ******* requests >>> pip install requests re >>> 內置模塊 不需要安裝 os >>> 內置模塊
如何安裝模塊:
1.win + R 輸入 cmd 輸入安裝命令: pip install 模塊名 回車 2.pycharm里面安裝 terminal 輸入安裝命令: pip install 模塊名 回車
模塊安裝失敗的原因:
1. 提示:pip 不是內部命令
你python環境變量可能沒有設置好
2. 有安裝進度條顯示,但是安裝到一半出現報錯了
因為python安裝模塊都是在國外的網址進行下載安裝的, 國內請求國外 網速很慢,下載速度大概只有 幾KB
read time out 網絡連接超時 你可以切換為國內的鏡像源 3. 明明在cmd里面安裝好了,但是在pycharm 提示我沒有這個模塊 你pycharm里面python解釋器沒有設置,你在pycharm設置里面重新設置一下
Python能做什么? 學習方向是什么樣? 很多小伙伴, 學習python之后不知道做什么~
如果沒有一個方向, 學python相關知識點 就會很亂
1.黑客
2.人工智能
3.數據挖掘
4.游戲開發
5.數據可視化
6.自動化
7.web后端開發 8.爬蟲 9.小程序開發 [分為前端[頁面] 后端[功能]] 10.app 可以做 不適合
本節爬蟲基本思路:
一. 數據來源的分析
1. 確定需求 (我要爬取什么內容)
2. 通過開發者工具進行抓包分析
圖片 / 如果你有獲取 網站url ID 視頻ID 音頻ID
圖片ID 里面一個參數 是實時更新變化 sign 找js
二. 代碼實現
1.發送請求 對於英雄列表數據包發送請求
2.獲取數據 獲取json字典數據 response.json() 3.解析數據 json數據直接解析 獲取 英雄ID 以及 英雄名字 4.發送請求 請求英雄的詳情頁 5.獲取數據 獲取網頁源代碼 response.text 6.解析數據 通過re正則表達式 提取皮膚名字 7.進行簡單處理 8.保存數據
OK那開始今天的正式內容吧,先看看模塊
import requests # 數據請求 第三方模塊 pip install requests import pprint # 格式化輸出的模塊 import re # 正則表達式模塊 內置模塊 import os # 發送請求 # 請求方式是什么樣的? get請求 post請求 # get: 是從服務器上面你直接獲取數據 可以在url上面看到請求參數 # post: 向服務器提交數據 提交一個from data 表單數據 登錄都是post 有安全性 # 看不到請求參數 [開發者工具看] # 請求頭 headers : 把python代碼偽裝成瀏覽器 # user-agent: 瀏覽器的基本信息 字典的形式
url地址直接復制過來
url = 'https://pvp.qq.com/web201605/js/herolist.json'
headers 也是復制
headers = { 'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.159 Safari/537.36' }
這樣代碼就要自己敲了
response = requests.get(url=url, headers=headers)
json_data = response.json()
[] 表示列表 可以遍歷
for index in json_data: # json字典數據 直接解析取值 鍵值對取值, # 根據冒號左邊的內容 提取冒號右邊的內容 hero_name = index['cname'] hero_id = index['ename'] filename = f'{hero_name}\\' if not os.path.exists(filename): os.mkdir(filename)
字符串格式化方法
index_url = f'https://pvp.qq.com/web201605/herodetail/{hero_id}.shtml' response_1 = requests.get(url=index_url, headers=headers)
自動轉碼...自動識別編碼
response_1.encoding = response_1.apparent_encoding
() 精確匹配 表達的括號里面的內容是我想要的呀
正則匹配出來的內容 是 列表 [0] 取列表里面第一個元素 0 索引位置
skin_name = re.findall('data-imgname="(.*?)">', response_1.text)[0]
&0 \d 是匹配一個數字 \d+ 匹配一個或者多個數字
skin_name = re.sub('&\d+', '', skin_name).split('|')
len() 統計列表元素個數 3個元素 左閉右開
for link in range(1, len(skin_name) + 1): # 因為皮膚圖片url link_name = skin_name[link - 1] link_url = f'https://game.gtimg.cn/images/yxzj/img201606/skin/hero-info/{hero_id}/{hero_id}-bigskin-{link}.jpg' # 獲取圖片的二進制數據 img_content = requests.get(url=link_url, headers=headers).content with open(filename + link_name + '.jpg', mode='wb') as f: f.write(img_content) print(f'{link_name}保存成功.....')
ok,大家可以自己試試看,需要獲取源碼的話,看主頁加群免費領取
