王者荣耀皮肤图片爬取
思路
英雄资料列表页-英雄介绍-王者荣耀官方网站-腾讯游戏 (qq.com)
1.先进入官网的英雄/皮肤界面
2.但是这个界面是不显示皮肤的,所以需要先找找皮肤在哪,先随便点个英雄头像进去
3.然后发现里面的界面的结构,是直接将皮肤图片作为背景,然后点击右下角选择皮肤图片
那总之先打开网页检查,看一下背景图片的代码
成功找到了关键的图片url
但是为了下载图片需要搞明白这个url的组成
在这一页找不到线索了,所以回到前一页,发现了一个可疑的请求
返回了一堆json加密内容,直接对它进行一个解密
这样一对照,url的组成就很容易猜到了
url中的数字就是这个类似英雄编号的ename,后面的数字则是皮肤的序号
这样就可以直接通过代码获取所有的url,也就是所有的皮肤图片了
代码
import requests import json import os import time #程序开始时间 st = time.time() url = 'http://pvp.qq.com/web201605/js/herolist.json' # 获取 json 内容 response=requests.get(url).content # 提取 Json 信息 jsonData=json.loads(response) # 打印查看 print(jsonData) # 初始化下载数量 x = 0 hero_dir='imgs/' #目录不存在则创建 if not os.path.exists(hero_dir): os.mkdir(hero_dir) for m in range(len(jsonData)): # 英雄编号 ename = jsonData[m]['ename'] # 英雄名称 cname = jsonData[m]['cname'] # 皮肤名称,一般英雄会有多个皮肤 skinName = jsonData[m]['skin_name'].split('|') # 皮肤数量 skinNumber = len(skinName) # 循环遍历处理 for bigskin in range(1,skinNumber+1): # 拼接下载图片url picUrl = 'http://game.gtimg.cn/images/yxzj/img201606/skin/hero-info/'+str(ename)+'/'+str(ename)+'-bigskin-'+str(bigskin)+'.jpg' #获取图片内容 picture = requests.get(picUrl).content # 保存图片 with open( hero_dir + cname + "-" + skinName[bigskin-1]+'.jpg','wb') as f: f.write(picture) x=x+1 print("当前下载第"+str(x)+"张皮肤") # 获取结束时间 end = time.time() # 计算执行时间 exec_time = end-st print("找到并下载"+str(x)+"张图片,总共用时"+str(exec_time)+"秒。")