20行代码爬取王者荣耀全皮肤
最近南方的天气有点上头,工作(摸鱼)都开始觉得无聊了,打开手机跟朋友来一把TiMi,什么?队友居然都是v8和各种传说皮肤,这我能忍吗?别人有的,我也要有!!!
于是我就默默打开了王者荣耀官网~
寻找接口
想要开始爬虫,第一步当然是寻找数据的接口啦~
我们打开英雄资料页面,发现王者荣耀所有的英雄都在这里了,我们发现数据在源码里,我信誓旦旦的直接怼这个url,然后发现0.0,只有93个英雄,沉迷王者荣耀的我一眼就看出来了,王者荣耀一共有103个英雄呢!!!
我们右键进入源码发现确实少了十个英雄
那怎么办?我们一定要知道一个道理,数据不可能凭空出现,他一定藏在某个接口里!!凭着这份坚持,我们继续找接口~
我们摁下F12,在xhr里果然看到一个接口叫做herolist,emmm这个名字就差直接用中文提示我了
点开发现刚好有103条数据,这不是我们需要的数据我lbw当场把这台电脑吃了!!!
爬取皮肤图片
接下来我们点进一个英雄详情,然后看一下皮肤的url,发现了什么!!
url中的167就是英雄ID,在上一步的接口中可以拿到
这里的规律就不用我多说了叭~
话不多说,直接上源码~
import requests
import json
import os
from pathlib import Path
def run():
base_url = "https://pvp.qq.com/web201605/js/herolist.json"
headers = {
'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36'
}
base_res = requests.get(base_url,headers=headers)
base_res.encoding='utf-8'
json_data = json.loads(base_res.text)
for i in json_data:
name = i['cname']
ename = i['ename']
title = i['title']
skin_name = i.get('skin_name',title)
skin_list = skin_name.split('|')
for j in range(len(skin_list)):
img_name = skin_list[j]
print(f"正在下载:{name}>{img_name}")
img = f"http://game.gtimg.cn/images/yxzj/img201606/skin/hero-info/{ename}/{ename}-bigskin-{j+1}.jpg"
file_ = f"D:\\王者荣耀\\{name}"
file_path = Path(file_)
if not file_path.is_dir():
os.mkdir(file_)
img_res = requests.get(img,headers=headers)
with open(f"D:\\王者荣耀\\{name}\\{img_name}.jpg",'wb') as f:
f.write(img_res.content)
print(f"{name}>{img_name} 下载完成~")
if __name__ == "__main__":
run()
最后放上效果图
小妲己镇楼~ps(想一起TiMi(掉分)的朋友可以联系我QAQ)