王者荣耀官方是由壁纸的官方壁纸链接,而不是使用hero_list.json这个文件
废话不说,上代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
import requests
import time
import json
import os

# 存放壁纸文件夹
if not os.path.exists('.\\data'):
os.mkdir('.\\data')

# 存放下载图片信息
fileInfo = ''

print('正在开始下载,请等待...')

# 下载时候只有21页,没找到获取总共页数的方法,自己根据情况修改
for pages in range(22):
# 拼接连接
jsonurl = '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=' + str(pages) + '&iOrder=0&iSortNumClose=1&iAMSActivityId=51991&_everyRead=true&iTypeId=2&iFlowId=267733&iActId=2735&iModuleId=2735&_=1578643950203'
# 获取json文件
jsonr = json.loads(requests.utils.unquote(requests.get(jsonurl).text))
# 解析json文件
for i in jsonr["List"]:
# 本地图片文件不存在
# 防止再次下载重复下载
if not os.path.exists('.\\data\\' + i["sProdName"] + '.jpg'):
# 拼接路径下载
# 因为我只需要1920*1080大小的地址,所以本代码只爬了该大小
imgurl = i["sProdImgNo_6"][:len(i["sProdImgNo_6"]) -3] + '0'
img = requests.get(imgurl)

# 写入本地
with open('.\\data\\' + i["sProdName"] + '.jpg','wb') as f:
f.write(img.content)

fileInfo += '.\\data\\' + i["sProdName"] + '.jpg' + '\n'
print(i["sProdName"] + '.jpg 已下好')
time.sleep(2)
else:
print('.\\data\\' + i["sProdName"] + '.jpg 已存在')

# 保存下载的图片列表
with open('wzry.lst','w') as f:
f.write(fileInfo)