当前位置:首页 > 王者荣耀 > 正文

Python爬虫#王者荣耀的网址在哪#

王者荣耀作为近几年的一款国民级的游戏,一直在为提升用户体验在做不懈努力。英雄越来越多,越来越怪,皮肤也越来越多,越做越美!

官方网站地址:https://pvp.qq.com/

//WwW.lUomAysD.com

网站上有高清壁纸一个项目,本篇文章就是在于利用小脚本,自动地下载所有的高清壁纸,对于王者荣耀这款游戏爱好者来说,用来做电脑桌面是非常好的选择。

1、打开官网,点击游戏壁纸项目

2、爬虫分析

分析:

爬虫的根本目的就是从网上获取数据!数据从哪里来?

(a)源代码里

//WwW.lUomAysD.com

(b)Network数据分析

(c)加密

我们按照这三个方式,从简单到困难一步一步地走!

(a)查看网页源代码结果如下,可以发现,并没有我们想要的数据结果。

(b)那就第二种,开始检查-Network数据分析。在XHR中并没有发现可用的数据。

但是打开Js之后,我们看到了在加载下一页的情况下,部分Js数据是一点一点加载出来的,点进去一看,果然就是我们所需要的数据。

//WwW.lUomAysD.com

//WwW.lUomAysD.com

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.com
import 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()

执行程序开始:

结果展示: