一、前言
打過王者的童鞋一般都會喜歡里邊設計出來的英雄吧,特別想把王者榮耀的英雄的高清圖片當成電腦桌面
預覽一下桌面吧:
是不是看着這樣的桌面也很帶感,_ (學會這個技術,你可以爬取其他網站的類似圖片,哄妹子專用,O(∩_∩)O哈哈~)
二、程序實現
-
我們先去找一個靠譜的網站吧,自然而然的網站地址鎖定在王者榮耀官網上,正好他給我們提供了壁紙頁面 http://pvp.qq.com/web201605/wallpaper.shtml
一共14頁 -
構建我們的目標數據URL
隨便多翻幾頁,用firebug 等調試工具,觀察一下我們的請求列表,找到其中特別明顯的圖片list api
展開以后,特別詳細的URL
http://apps.game.qq.com/cgi-bin/ams/module/ishow/V1.0/query/workList_inc.cgi?activityId=2735&sVerifyCode=ABCD&sDataType=JSON&iListNum=20&totalpage=0&page=10&iOrder=0&iSortNumClose=1&jsoncallback=jQuery17106927574791770883_1525742053044&iAMSActivityId=51991&everyRead=true&iTypeId=2&iFlowId=267733&iActId=2735&iModuleId=2735&=1525742856493
問題簡單了就:
urls = [ "http://apps.game.qq.com/cgi-bin/ams/module/ishow/V1.0/query/workList_inc.cgi?activityId=2735&page=%d&sVerifyCode=ABCD&sDataType=JSON&iListNum=20&totalpage=0&iOrder=0&iSortNumClose=1&jsoncallback=jQuery1710881537174597735 6_1486710433816&iAMSActivityId=51991&_everyRead=true&iTypeId=2&iFlowId=267733&iActId=2735&iModuleId=2735&_=1486710458098" % (p) for p in range(0,14) ]
-
獲取文檔的內容:
這一步就比較簡單了,requests 堪稱寫給人類的http 請求庫,可以自己參看他的api 很強大,可以完成,任何手工在瀏覽器上的任何行為,用得好,你可以省掉很多的事兒,順路貼一個api 鏈接吧 (http://www.python-requests.org/en/master/)[http://www.python-requests.org/en/master/]def loadUrlContent(url):
return requests.get(u).text -
解析文檔內容 :
api 返回情況,大致如下: 是一個jsonp callback的返回
這種情況一般是callback后邊對應了一個json對象,我們可以用python的 json 類庫來解析:
解析數據千差萬別,本文的數據相對簡單,所以用了相對簡單的處理方式:
## 這種解析數據的代碼並不適用於所有的頁面
def jsonContent(pageContent):
json_content = pageContent.split("(")[1].split(")")[0]
return json.loads(json_content)
解析完成以后的一個json對象屬性如下:
查看json 對象內容必備: https://www.json.cn/ 可以看到清晰的對象屬性
很明顯的,List 屬性就是我們想要獲取的壁紙對象了,然后,其中 sProdImgNo_1,2,3,4,5,6,7,8 中保存了,url 編碼的圖片url地址。
本實例為了演示我們只獲取其中的 sProdImgNo_5 來做下載,大家可以根據需求做不同的遍歷.
寫一個簡單的對象循環完成我們的子任務吧:
for item in pageJson['List']:
dealWithItem(item)
- 處理元素函數 , 下載文件圖片:
觀察發現圖片url 是url編碼好的地址: 我們可以用 urllib 的 unquote 方法轉成原文:
獲取的一個圖片URL原文是這樣的:
自行對比下,觀測到的圖片的真實地址如下:
然后,我們只需要簡單的把 200 replace 成0 就ok 了。
下載文件,直接通過requests get url 保存成文件就ok啦。
三、運行效果
- 最終展示下我們的成果吧:
四、項目文件結構
python 爬取王者榮耀高清壁紙
注:本文著作權歸作者,由demo大師代發,拒絕轉載,轉載需要作者授權