王者荣耀作为近几年的一款国民级的游戏,一直在为提升用户体验在做不懈努力。英雄越来越多,越来越怪,皮肤也越来越多,越做越美!
官方网站地址:https://pvp.qq.com/
//WwW.lUomAysD.com网站上有高清壁纸一个项目,本篇文章就是在于利用小脚本,自动地下载所有的高清壁纸,对于王者荣耀这款游戏爱好者来说,用来做电脑桌面是非常好的选择。
1、打开官网,点击游戏壁纸项目
2、爬虫分析
分析:
爬虫的根本目的就是从网上获取数据!数据从哪里来?
(a)源代码里
//WwW.lUomAysD.com(b)Network数据分析
(c)加密
我们按照这三个方式,从简单到困难一步一步地走!
(a)查看网页源代码结果如下,可以发现,并没有我们想要的数据结果。
(b)那就第二种,开始检查-Network数据分析。在XHR中并没有发现可用的数据。
但是打开Js之后,我们看到了在加载下一页的情况下,部分Js数据是一点一点加载出来的,点进去一看,果然就是我们所需要的数据。
3、好,既然结果找到了!那么就开始分析,这些项目的url链接有何不同?
链接如下:
1、
https://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=0&iOrder=0&iSortNumClose=1&jsoncallback=
jQuery17105269928655665583_1567775975698&iAMSActivityId=51991&_everyRead=true&iTypeId=2&iFlowId=267733&iActId=2735&iModuleId=2735&_=1567775975873
2、
https://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=1&iOrder=0&iSortNumClose=1&jsoncallback=
jQuery17105269928655665583_1567775975699&iAMSActivityId=51991&_everyRead=true&iTypeId=2&iFlowId=267733&iActId=2735&iModuleId=2735&_=1567776065494
3、
https://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=2&iOrder=0&iSortNumClose=1&jsoncallback=
jQuery17105269928655665583_1567775975700&iAMSActivityId=51991&_everyRead=true&iTypeId=2&iFlowId=267733&iActId=2735&iModuleId=2735&_=1567776066424
通过对比可以发现,除了page的参数是由0,1,2变化的,其它参数,jsoncallback,_参数也是变化的,但是我在运行程序的时候发现,这两个参数的可用性并不大。即,即使我所有的url仅仅只有page在变化,也是可以获取到数据的。
这两个参数后面的数据,我猜测可能是时间戳,既然不影响结果,那就不继续往下分析了。
那么,接下来就是写代码的时刻了!
//WwW.lUomAysD.comimport requests import json import urllib.parse # 不标准的json数据,需要处理 def jsonContent(pageContent): json_content = pageContent.split("(")[1].split(")")[0] data = json.loads(json_content) #print(data) return data # 获取图片下载链接 def dealWithItem(item): real_url = urllib.parse.unquote(item['sProdImgNo_8']) real_url = real_url.replace('200','0') print(real_url) return real_url # 图片保存 def save_img(real_url,i): web_data = requests.get(real_url) web_data = web_data.content with open('%s.jpg'%i,'wb') as f: f.write(web_data) def main(): # 文件命名 i = 1 for num in range(1,20): 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=%s&iOrder=0&iSortNumClose=1&jsoncallback=jQuery171007561583610254674_1567775177844&iAMSActivityId=51991&_everyRead=true&iTypeId=2&iFlowId=267733&iActId=2735&iModuleId=2735&_=1567775301622'%num content = requests.get(url).text data = jsonContent(content) for item in data['List']: real_url = dealWithItem(item) save_img(real_url,i) i = i+1 if __name__ == '__main__': main()
执行程序开始:
结果展示: