python 爬取王者榮耀高清壁紙


代碼地址如下:
http://www.demodashi.com/demo/13104.html

一、前言

打過王者的童鞋一般都會喜歡里邊設計出來的英雄吧,特別想把王者榮耀的英雄的高清圖片當成電腦桌面

預覽一下桌面吧:

是不是看着這樣的桌面也很帶感,_ (學會這個技術,你可以爬取其他網站的類似圖片,哄妹子專用,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 爬取王者榮耀高清壁紙

代碼地址如下:
http://www.demodashi.com/demo/13104.html

注:本文著作權歸作者,由demo大師代發,拒絕轉載,轉載需要作者授權


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM