Fiddler之掌上英雄聯盟APP爬取(爬取全部英雄的圖片)
阿新 • • 發佈:2018-12-11
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的內容是和爬網頁是差不多的,最重要的還是抓取包,分析其中的內容