LOL大家都爱玩吧,今天我们来爬一波图。用requests爬取英雄联盟官网所有英雄的皮肤图片,并以英雄分类保存。

一,网页分析

首先我们打开英雄联盟官网,并找到英雄页面,然后分析页面,先查看网页源码,这里我们就以第一个英雄 “ 黑暗之女 ” 为例,点击可以看到他的名字和头像的图片链接都在id = " jSearchHeroDiv " 的ul节点下面的li节点中,由此看出一个英雄就是一个li节点。

可以看到,网页源代码中没有资源,通过请求皮肤站页面发现并没有出来结果。由此推断出,该页面内容是通过js加载出来的,这是打开Network选项卡,筛选JS请求,然后发现有一个hero_list.js,点到Preview选项卡,可以看到这里面存放着英雄信息,然后点进headers选项卡得知他的url为https://game.gtimg.cn/images/lol/act/img/js/heroList/hero_list.js

接着,我们点击第一个英雄,可以发现,当网页加载完成时,在开发者工具的Network选项中出现了一个1.js的文件,之后点击他的header,发现他的url为https://game.gtimg.cn/images/lol/act/img/js/hero/1.js。

我们点击它,再点击Preview选项,点击查看,发现里面是这个英雄以及皮肤的详细信息,这些信息就是我们所需要的了。

最后通过分析可以得知name就是皮肤的名称,mainImg就是我们想要的皮肤图片,只要得到这些关键信息就可以制作爬虫了

那我们就按照这个思路开始我们的爬虫吧!

一,获取英雄数量

首先我们进入英雄列表页,打开Network选项卡,筛选JS请求,然后发现有一个hero_list.js,这里存放在所有英雄,点到后查看headers选项卡得知他的url为https://game.gtimg.cn/images/lol/act/img/js/heroList/hero_list.js,这样就可以得到英雄数量了。

r = requests.get(hero_url)
hero_json = r.json()
hero_json = hero_json['hero']
print(len(hero_json))

二,获取英雄名(创建目录)

点击英雄详情页面,查找JS文件(方法同上),可以得到他的url,但是我们要做的是爬取所有英雄的皮肤图片,所有我们看一下能不能找到什么规律,我们再点击第二个英雄查看一下

https://game.gtimg.cn/images/lol/act/img/js/hero/1.js
https://game.gtimg.cn/images/lol/act/img/js/hero/2.js

通过观察可以看到网页链接基本相同,只有 .js 前面的数字不一样,这里的数字就是英雄的编号,所以只要使这里的数字发生变化就能得到对应英雄的信息。从json里我们可以得到英雄名称,皮肤名称,图片地址等信息,这时我们就可以创建对应英雄的文件夹了。我们来看代码实现

def get_info(base_url):url = base_url + str(i) + '.js'r = requests.get(url)info = r.json()hero = info.get('hero').get('name') #英雄名称skins = info.get('skins')path = file_path + '/' + heroif not os.path.exists(path):os.mkdir(path)

三,获取皮肤名称与地址

获取皮肤名称与地址的方法与上面相同,所以不做太多介绍,这里需要注意的是有的皮肤url为空,这就需要在遍历的时候注意,遇到空url就跳过,然后访问图片url,并以二进制写入。

def get_skin(path, skins):for skin in skins:skin_name = skin.get('name')skin_url = skin.get('mainImg')if skin_url == '':continueimg = requests.get(skin_url, headers=headers)if not os.path.exists(path + '/' + skin_name + '.jpg'):with open(path + '/' + skin_name + '.jpg', 'wb')as f:f.write(img.content)

四,执行主程序

这里加入了计时,方便查看程序所用时长

if __name__ == '__main__':r = requests.get(hero_url)hero_json = r.json()hero_json = hero_json['hero'] # 获取英雄数量print(len(hero_json))for i in range(1, len(hero_json)):get_info(base_url)print('用时{:.3f}s'.format(start - perf_counter()))

好了,以上就是对英雄联盟全站所有皮肤图片的抓取过程

下面是爬取结果(这里只采集前20个英雄):

完整代码:

import json
import requests
import os
from time import perf_counter# 开始计时
start = perf_counter()
headers = {'user - agent':'Mozilla / 5.0(Windows NT 10.0;Win64;x64) AppleWebKit / 537.36(KHTML, likeGecko) Chrome / 84.0.4147.89Safari / 537.36'
}
hero_url = 'https://game.gtimg.cn/images/lol/act/img/js/heroList/hero_list.js'
base_url = 'https://game.gtimg.cn/images/lol/act/img/js/hero/'
file_path = 'E:\python\project\LOL英雄皮肤\image'# 获取英雄名并创建文件夹
def get_info(base_url):url = base_url + str(i) + '.js'r = requests.get(url)info = r.json()hero = info.get('hero').get('name')skins = info.get('skins')path = file_path + '/' + heroif not os.path.exists(path):os.mkdir(path)get_skin(path, skins)print(hero + ' —— ok')# 获取皮肤并保存
def get_skin(path, skins):for skin in skins:skin_name = skin.get('name')skin_url = skin.get('mainImg')if skin_url == '':continueimg = requests.get(skin_url, headers=headers)if not os.path.exists(path + '/' + skin_name + '.jpg'):with open(path + '/' + skin_name + '.jpg', 'wb')as f:f.write(img.content)if __name__ == '__main__':r = requests.get(hero_url)hero_json = r.json()hero_json = hero_json['hero'] # 获取英雄数量for i in range(1, len(hero_json)):get_info(base_url)print('用时{:.3f}s'.format(start - perf_counter()))

如有错误,欢迎私信纠正,谢谢支持!

requests爬取英雄联盟皮肤图片相关推荐

  1. 牛散村:python怎么爬取英雄联盟皮肤图片?爬虫实战!

    相信很多小伙伴都是喜爱英雄联盟的玩家,英雄联盟的皮肤制作还是比较精美的,有收集癖好的小编打算用爬虫将官网的皮肤爬取下来.接下来就看小编怎么用python爬取英雄联盟皮肤吧!(内附python爬虫源代码 ...

  2. Requests库应用实例4:网络图片的爬取与存储(以爬取英雄联盟皮肤图片为例)

    网络图片的爬取与存储 1.获取爬取图片的URL 2.代码 3.批量下载lol皮肤图片完整代码 1.获取爬取图片的URL 以艾希的源计划联合为例 这个图片的URL:https://game.gtimg. ...

  3. 【爬虫】使用requests爬取英雄联盟英雄皮肤

    使用requests爬取英雄联盟英雄皮肤 自己做的 import requestsresponse = requests.get("https://game.gtimg.cn/images/ ...

  4. python lol脚本_python 爬取英雄联盟皮肤并下载的示例

    爬取结果: 爬取代码 import os import json import requests from tqdm import tqdm def lol_spider(): # 存放英雄信息 he ...

  5. python---爬取英雄联盟皮肤图片

    爬LOL的皮肤高清图片的大致步骤就是用selenium去爬取英雄联盟所以英雄的皮肤的url地址,然后在用requests库去将图片下载到本地. 爬取的第一步,先去分析网站. 皮肤图片的位置在官网的资料 ...

  6. 10行代码爬取英雄联盟皮肤全套。6不6?

    引言    王者荣耀大家都玩过吧,没玩过的也应该听说过,作为时下最火的手机MOBA游戏,咳咳,好像跑题了.我们今天的重点是爬取王者荣耀所有英雄的所有皮肤,而且仅仅使用20行Python代码即可完成. ...

  7. Python爬虫练习之爬取英雄联盟皮肤

    毕业设计还没有弄完,但又不想弄,就先写个爬虫换换心情吧. 爬取的是英雄联盟英雄的皮肤,不过首页的url地址没有我们想要的数据,需要找到真实的url地址,就是简单的json文本,过程比较简单,步骤都写在 ...

  8. 使用python爬取英雄联盟的图片

    起因:练习一下python,看到有人爬取王者荣耀的皮肤,我也来练练手. 首先查看英雄联盟英雄界面的js,还有英雄的js以及皮肤图片的url.这里我们可以看到英雄的列表是在http://lol.qq.c ...

  9. 爬取 英雄联盟 皮肤

    跟着教程写了很久,每次莫名其妙的就会报错,然后从中间复制,再重新写一遍... 今天下午是最接近成果的一次了,缺还是卡壳了.. 革命尚未成功... 期间找到了pycharm的汉化包,确实方便许多.. 附 ...

  10. 用Python3Request爬取英雄联盟皮肤、单线程爬取

    """ Hero_LOL 和王者荣耀类似 """ import requests import re import json import ...

最新文章

  1. SAP MM 盘点事务中的序列号
  2. 攻下《JavaScript高级程序设计》——第二章 在HTML中使用JavaScript
  3. 神经网络版员工离职预测
  4. Windows下 更改 pip默认缓存目录
  5. [汇编语言]实验:更灵活的寻址方式 -应用si和di
  6. 百度SEO站群給WordPress加音乐插件源码
  7. spring 事务_极限 Spring (4) Spring 事务
  8. 使用SQL Server更改跟踪创建SQL Server审核
  9. latex hyperref_Latex 用subfig引用子图显示括号
  10. 【muduo源码分析】Buffer类的设计
  11. 高中计算机编程内容,高中信息技术课程标准
  12. 微信支付服务器白名单,总结下我在微信支付中趟的那些坑。
  13. 星星之火OIer:编程社四连测总结
  14. java用ffmpeg获取音频信息及转化音频采样率、比特率、声道数量、格式
  15. 判断ssh远程命令是否执行结束
  16. Nginx -- SSL模块
  17. OpenAI ChatGPT,爆火的OpenAi的ChatGPT聊天机器人注册和使用攻略,满满诚意哦
  18. 在沟通管理中,如何给予有效的反馈意见? | 每天成就更大成功
  19. 计算机开不了机反复重启,电脑一直反复重启,就是开不了机,怎么处理
  20. 语法基础(判断语句)

热门文章

  1. 使用aspose.words将Word转为PDF
  2. mysql ndb存储引擎_ndb 存储引擎
  3. c语言10k ntc 测温表,10KNTC热敏电阻对照表.doc
  4. SpringCloudStream、Spring事件监听机制、SpringCloudBus
  5. linkboy+ESP32创意DIY时钟
  6. Unity 组合键输入及容易忽略的问题
  7. CVE-2017-12635+12636 复现+反弹shell
  8. 基于SSM超越宠物医院诊治系统
  9. 固态硬盘数据恢复教您如何操作
  10. 【Unity3D】个人开发台球小游戏