Python爬虫之一–爬虫获取王者荣耀全英雄皮肤
正题:如何爬取王者荣耀英雄的全皮肤高清图片?
分为两步:
- 找到皮肤图片的地址
- python爬虫下载图片
1. 找到皮肤图片的地址
1、先找到英雄列表
先打开百度“王者荣耀”进入官网,进入https://pvp.qq.com/,按F12进入调试界面,然后按F5刷新界面,图中标识的herolist.json文件就是我们所需要的英雄列表,其中包括英雄编号、英雄名称、英雄类型、皮肤的名称等信息,在文件上右击复制链接http://pvp.qq.com/web201605/js/herolist.json
2、找到英雄的皮肤地址
1、点击首页的“游戏资料”标签页,进入新的界面后点击一个英雄头像进入英雄资料界面;
2、同样F12然后F5,将鼠标在英雄的几个皮肤上依次扫过,来看看调试窗口 ;
3、可以看到英雄的高清皮肤,同样我们在第一个皮肤上右键复制链接得到:http://game.gtimg.cn/images/yxzj/img201606/skin/hero-info/111/111-bigskin-1.jpg,这就是我们梦寐以求的英雄皮肤链接;
分析一下这个链接,其中“111”是英雄的编号,最后的“1”是该英雄的皮肤编号。到此为止,浏览器已经没有用了,该得到的信息我们都有了。
第一步的代码片段如下:
# 代码片段1
import os
import requests
url = 'https://pvp.qq.com/web201605/js/herolist.json'
herolist = requests.get(url) # 获取英雄列表json文件
herolist_json = herolist.json() # 转化为json格式
hero_name = list(map(lambda x: x['cname'], herolist.json())) # 提取英雄的名字
hero_number = list(map(lambda x: x['ename'], herolist.json())) # 提取英雄的编号
2. python爬虫下载图片
1、在第一步获取到的herolist.json文件中有“cname”字段,我们只要解析这个字段就可以获取皮肤数量和皮肤名称。测试代码(接代码片段1);
2、下载文件用到urlretrieve接口,测试代码如下:
# 代码片段2
# 下载图片
def downloadPic():
i = 0
for j in hero_number:
# 创建文件夹 此处文件夹可自行修改
os.mkdir("E:\\360Downloads\\wzry\\" + hero_name[i])
# 进入创建好的文件夹
os.chdir("E:\\360Downloads\\wzry\\" + hero_name[i])
i += 1
for k in range(10):
# 拼接url
onehero_link = 'http://game.gtimg.cn/images/yxzj/img201606/skin/hero-info/' + str(j) + '/' + str(j) + '-bigskin-' + str(k) + '.jpg'
im = requests.get(onehero_link) # 请求url
if im.status_code == 200:
open(str(k) + '.jpg', 'wb').write(im.content) # 写入文件
downloadPic()
至此王者荣耀的所有皮肤全部下载完毕,都是高清图片。
至此,大功告成,下面展示一下完整代码:
如果有不完美的地方,希望读者批评并指出。
# 完整代码
import os
import requests
url = 'https://pvp.qq.com/web201605/js/herolist.json'
herolist = requests.get(url) # 获取英雄列表json文件
herolist_json = herolist.json() # 转化为json格式
hero_name = list(map(lambda x: x['cname'], herolist.json())) # 提取英雄的名字
hero_number = list(map(lambda x: x['ename'], herolist.json())) # 提取英雄的编号
# 下载图片
def downloadPic():
i = 0
for j in hero_number:
# 创建文件夹 此处文件夹可自行修改
os.mkdir("E:\\360Downloads\\wzry\\" + hero_name[i])
# 进入创建好的文件夹
os.chdir("E:\\360Downloads\\wzry\\" + hero_name[i])
i += 1
for k in range(10):
# 拼接url
onehero_link = 'http://game.gtimg.cn/images/yxzj/img201606/skin/hero-info/' + str(j) + '/' + str(j) + '-bigskin-' + str(k) + '.jpg'
im = requests.get(onehero_link) # 请求url
if im.status_code == 200:
open(str(k) + '.jpg', 'wb').write(im.content) # 写入文件
downloadPic()
除去注释和空行,一共19行代码实现了下载王者荣耀所有皮肤的功能,这些皮肤用来当作桌面背景也是极好的!!!体验一下!!!