Python爬虫之一--爬虫获取王者荣耀全英雄皮肤

Python爬虫之一–爬虫获取王者荣耀全英雄皮肤

正题:如何爬取王者荣耀英雄的全皮肤高清图片?

分为两步:

  1. 找到皮肤图片的地址
  2. 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行代码实现了下载王者荣耀所有皮肤的功能,这些皮肤用来当作桌面背景也是极好的!!!体验一下!!!

发布了27 篇原创文章 · 获赞 4 · 访问量 1226

猜你喜欢

转载自blog.csdn.net/WX_timi/article/details/104329430