1. 程式人生 > >Fiddler之掌上英雄聯盟APP爬取(爬取全部英雄的圖片)

Fiddler之掌上英雄聯盟APP爬取(爬取全部英雄的圖片)

1.安裝好Fiddler

2.手機APP抓包設定

3.安全證書的設定

第二,第三步參考連結:https://blog.csdn.net/c406495762/article/details/76850843
裡面是關於安卓的設定
下面是關於ios的
首先要把Fiddler開啟並且按照以上的步驟設定好
然後在手機上開啟safari輸入(自己的ip地址:8888)出現在這裡插入圖片描述
點選FiddlerRoot cerrificate 按步驟按照信任證書
最後在設定–通用–關於本機–證書信任設定中開啟

4.開啟掌上英雄聯盟

點選商城–英雄頁面
在這裡插入圖片描述
為了在Fiddler中更好的展示,點選排序–上架日期 從晚到早
然後玩下滑,將所有英雄都加載出來
開啟Fiddler你可以看到
在這裡插入圖片描述

可以看到抓到的包,get請求,url地址,還有返回的JSON格式的資訊
返回的資訊中包含了圖片的地址,名稱
圖中藍字的資訊,其實就是將url中page更改了,分別訪問就可以得到所有資訊了

5.程式碼

import requests
import os


def get_HTML(page):
    url = 'http://apps.game.qq.com/daoju/go/zmgoods/list?plat=ios&version=9822&cat=16&orderby=dtBegin&order=asc&page={}&pagesize=20'.format(
        page)
    headers = {'User-Agent': 'qtl 7.0.1 (iPhone; iOS 10.3.3; zh_CN)',
               'Host': 'apps.game.qq.com',
               'Connection': 'keep - alive'}
    try:
        r = requests.get(url, headers=headers)
        r.raise_for_status()
        r.encoding = r.apparent_encoding
        # print(r.json())
        # print(r.text)
        return r.json()
    except:
        print('11111')


def parse_json(json):
    items = json.get('data').get('goods')  # 返回的是一個列表
    for item in items:
        name = item['sGoodsName']  # 獲取了名稱
        imageurl = item['sGoodsPic']  # 獲取了圖片的連結
        # print(name, imageurl)
        yield name, imageurl


def saveimages(name, imageurl):  # 儲存圖片
    headers = {'User-Agent': 'Mozilla/5.0'}
    root = 'D://IDE//Pycharm//《網路爬蟲實戰開發》//手機App的抓取//images'
    if not os.path.exists(root):  # 如果根目錄不存在就建立一個
        os.mkdir(root)
    path = root + '//' + name + '.jpg'  # 圖片路徑
    # try:
    if not os.path.exists(path):
        r = requests.get(imageurl, headers=headers, verify=False)  # 程式忽略SSL證書驗證錯誤 如果沒有CA認證的網站用requests訪問的時候,會報出SSLerror
        r.raise_for_status()
        with open(path, 'wb') as f:
            f.write(r.content)
    # except:
    #     print('2222')


if __name__ == '__main__':
    for page in range(1, 9):
        a = get_HTML(page)
        for name, imageurl in parse_json(a):
            saveimages(name, imageurl)

6.總結

第一還是要配置好Fiddler
第二抓取APP的內容是和爬網頁是差不多的,最重要的還是抓取包,分析其中的內容