爬蟲小程序 - 爬取王者榮耀全皮膚

學習原因:

爬蟲是一門有趣的技術,它可以讓我們感受到程序的魅力,給我們帶來視覺衝擊感和成就感,可以極大地提高我們對編程的學習興趣。
——————
願你我,都能:
遵循君子協議
合理使用技術
提高學習興趣

一. 君子協議

爲什麼每次被抓的都有你~

我們應該自覺遵守君子協議(爬蟲協議的俗稱),掌握爬蟲的技術。
在對應網址之後增加 /robots.txt, 即可查看爬蟲協議,知道哪些頁面是不可爬取的,爬蟲協議具體內容可自行百度瞭解。

例如: https://www.baidu.com/robots.txt
在這裏插入圖片描述

二. 用戶代理

僞裝術,我是平民~

網站可以識別出是程序還是瀏覽器訪問的, 具有反爬蟲措施, 所以需要進行僞裝, 僞裝需要添加用戶代理(User-Agent)

查找方法1: 網址中輸入 about:version
在這裏插入圖片描述
查找方法2: 查看請求頭的中User-Agent

操作流程:在任意頁面,比如:百度搜索頁,首先點一下鼠標右鍵,點擊檢查。接着,點擊Network,點擊頁面刷新,在Name下點擊任意一條,比如:www.baidu.com。最後,在Headers中滑到最下方,找到User-Agent,複製用戶代理。
在這裏插入圖片描述

三,爬蟲代碼:

流程:

  1. 明確目標,爬取王者榮耀全皮膚;
  2. 分析過程,進網站通過抓包瞭解皮膚圖片的存儲位置;
  3. 拆解步驟,找出皮膚圖片的存儲規律,把實現步驟拆解成若干個;
  4. 逐步運行,獲取需要的參數,完善代碼;

注意事項:

  • 添加用戶代理,進行僞裝
  • 新建同級文件夾pic,方便存儲皮膚圖片;
  • 加快運行效率,可參考提高爬蟲效率的技術
  • 具體操作流程,可參考其他文章資源,此處只有效果

文件構架:

# 第一層:
mySpider(總文件夾,用來練習爬蟲技術)
# 第二層:
--pic(文件夾,用來儲存皮膚圖片)
--rongyao.py(python文件,用來爬取榮耀全皮膚)

代碼:

運行條件:代碼中添加用戶代理,總文件夾下新建pic文件夾(要與python文件在同一級哦)。

# 1.導入所需模塊
import requests


# 2.讀取json文件
url = 'http://pvp.qq.com/web201605/js/herolist.json'
headers = {'User-Agent':'此處省略,替換成自己的用戶代理'} # 添加用戶代理
response = requests.get(url, headers=headers)
json_list= response.json()

# print(len(json_list)) # 英雄總數量:95個英雄
# print(json_list) # 打印結果,瞭解json_list的構造

try:
    # 3.提取json文件,下載圖片
    for m in range(len(json_list)):
        # 英雄編號
        hero_num = json_list[m]['ename']
        # 英雄名稱
        hero_name = json_list[m]['cname']
        # 獲取皮膚列表
        skin_name = json_list[m]['skin_name'].split('|')
        # 統計皮膚數量
        skin_count = len(skin_name)
        print('英雄名稱:',hero_name,' 皮膚數量:',skin_count) # 打印英雄的皮膚數量

        # 遍歷每一個圖片網址
        for i in range(1, skin_count + 1):
            # 網址拼接, 構造完整的圖片網址
            url = 'http://game.gtimg.cn/images/yxzj/img201606/skin/hero-info/' # 圖片網址固定前綴
            url_pic = url + str(hero_num) + '/' + str(hero_num) + '-bigskin-' + str(i) + '.jpg'
            # 獲取圖片信息
            picture = requests.get(url_pic).content
            # print(picture) # 打印圖片網址
            # 下載圖片 文件路徑爲: pic/英雄名-皮膚名.jpg (需要新建pic文件夾)
            with open('pic/'+ hero_name + ' - ' + skin_name[i - 1] + '.jpg', 'wb') as f:
                f.write(picture)
except KeyError as e:
    # 捕獲異常:解決皮膚名稱全部打印完成後會報錯的問題
    print('程序執行完畢!')
            

最終結果:
在這裏插入圖片描述

四,python文件打包技術:

已將python文件轉爲exe可執行文件,下載後運行exe文件即可,例如:我們的電腦桌面的那些應用就是一個個exe文件。其中使用的python文件打包技術(下面提供跳轉鏈接),比較簡單,成功後可用像電腦軟件一樣直接運行在後臺,也方便分享給小夥伴哦。

>> 爬蟲程序下載鏈接,如下:

鏈接:https://pan.baidu.com/s/1L7DTYzkv_zRqX9zyAEZwhw
提取碼:0kzw
複製這段內容後打開百度網盤手機App,操作更方便哦

在這裏插入圖片描述
由於多人頻繁使用,該程序可能已失效,在這僅作參考,建議自行將python文件打包成可執行文件。
想要學習python文件打包技術,點擊右邊的鏈接即可:python文件打包技術

五,提高爬蟲效率的方法

普通的代碼爬取數據的效率較低,若數據變多,那麼等待時間會大大加長,如何縮短爬取數據的時間,我們可以瞭解一些提高爬蟲效率的方法。

以上實現了文件打包,直接在電腦上運行即可,無需使用python編輯器~

更多方法請點擊跳轉:提高爬蟲效率的方法

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章