爬虫小程序 - 爬取王者荣耀全皮肤

学习原因:

爬虫是一门有趣的技术,它可以让我们感受到程序的魅力,给我们带来视觉冲击感和成就感,可以极大地提高我们对编程的学习兴趣。

一,爬虫代码:

流程:

  1. 明确目标,我要爬王者荣耀全皮肤;
  2. 分析过程,进网站通过抓包了解皮肤图片的存储位置;
  3. 拆解步骤,找出皮肤图片的存储规律,把实现步骤拆解成若干个;
  4. 逐步运行,获取需要的参数,完善思路;

注意事项:

  1. 任务耗时。大概需要5-10分钟,等待完成即可。原因:该爬虫代码比较基础;
  2. 具体流程见注释,思路需要自行学习,网上有很多资源,注重掌握编程思维;
  3. 关于代码:
    • 需新建同级文件夹pic,方便存储(可自行修改代码文件名);
    • 新增异常捕获,解决代码结束后,程序还在获取皮肤名称的问题。

文件构架:

# 第一层:
spider(爬虫总文件夹)
# 第二层:
--pic(皮肤存储文件夹)
--01_爬取王者荣耀全皮肤.py

代码:

# 1.导入所需模块
import requests


# 2.读取json文件
url = 'http://pvp.qq.com/web201605/js/herolist.json'
headers = {'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.100 Safari/537.36'}
response = requests.get(url, headers=headers)
json_list= response.json()

# print(len(json_list)) # 英雄总数量:95个英雄
# print(json_list) # 打印结果,了解json_list的构造
# [{'ename': 105, 'cname': '廉颇', 'title': '正义爆轰', 'new_type': 0, 'hero_type': 3, 'skin_name': '正义爆轰|地狱岩魂'}, {...}, ...]

try:
    # 3.提取json文件,下载图片
    for m in range(len(json_list)):
        # 英雄编号
        hero_num = json_list[m]['ename']
        # 英雄名称
        hero_name = json_list[m]['cname']
        # 获取皮肤列表
        skin_name = json_list[m]['skin_name'].split('|')
        # 统计皮肤数量
        skin_count = len(skin_name)
        print('英雄名称:',hero_name,' 皮肤数量:',skin_count) # 打印英雄的皮肤数量

        # 遍历每一个图片网址
        for i in range(1, skin_count + 1):
            # 网址拼接, 构造完整的图片网址
            url = 'http://game.gtimg.cn/images/yxzj/img201606/skin/hero-info/' # 图片网址固定前缀
            url_pic = url + str(hero_num) + '/' + str(hero_num) + '-bigskin-' + str(i) + '.jpg'
            # 获取图片信息
            picture = requests.get(url_pic).content
            # print(picture) # 打印图片网址
            # 下载图片 文件路径为: pic/英雄名-皮肤名.jpg (需要新建pic文件夹)
            with open('pic/'+ hero_name + ' - ' + skin_name[i - 1] + '.jpg', 'wb') as f:
                f.write(picture)
except KeyError as e:
    # 捕获异常:解决皮肤名称全部打印完成后会报错的问题
    print('程序执行完毕!')
            

二,最终结果:


普通的代码爬取数据的效率较低,若数据变多,那么等待时间会大大加长,如何缩短爬取数据的时间,我们可以了解一些提高爬虫效率的方法。

点击跳转:提高爬虫效率的方法

你可能感兴趣的:(Spider)