爬取思路:
一、获取json文件
打开王者荣耀官方网站,进入英雄资料页(https://pvp.qq.com/web201605/herolist.shtml),用浏览器查找到下面文件,里面包含王者英雄得相关参数(ID,名字,皮肤数等)
二、分析析大海报得网址
通过分析网址发现图片地址是由id和序列号(与皮肤数量相关)拼接,同时都是以.jpg结尾,因此只要通过解析上面得到得json然后拼接成新的网址就能得到要请求得图片
三、把请求得图片保存
通过请求得到图片得二进制数据,然后拼接好文件名,通过二进制写入
import json
import requests
# https://game.gtimg.cn/images/yxzj/img201606/skin/hero-info/524/524-bigskin-1.jpg
class king_img():
def __init__(self):
self.url = 'https://pvp.qq.com/web201605/js/herolist.json'
self.data_list = []
def re_web(self):
res = requests.get(self.url)
text = res.json()
aa = json.dumps(text)
tt = json.loads(aa)
for i in tt:
print(i)
self.data = {}
self.data['id'] = i['ename']
self.data['name'] = i['cname']
try:
self.data['num'] = len(i['skin_name'].split('|')) + 1
except:
continue
self.data_list.append(self.data)
def get_img(self):
for i in self.data_list:
for j in range(0, i['num']):
id = i['id']
name = i['name']
try:
url = f'https://game.gtimg.cn/images/yxzj/img201606/skin/hero-info/{id}/{id}-bigskin-{j + 1}.jpg'
print(url)
print(name)
res = requests.get(url)
print(res.status_code)
if not res.status_code == 200:
continue
img = res.content
with open('皮肤//%s%d.jpg' % (name, j + 1), 'wb') as f:
f.write(img)
except:
continue
if __name__ == '__main__':
ki = king_img()
ki.re_web()
ki.get_img()
效果展示