先来看一张图片。

image.png

先讲解下思路,然后直接放源码,想要获取源码的同学直接拉到最下面就好。

1.爬虫第一步

首先要分析网页的DOM结构,就是英雄联盟官网,然后在下面找到英雄资料。然后在这里发现一个神奇的文件hero_list.js,打开看一下,结构是这样的。

image.png

嗯~~~,感觉可以省了好多工作了。可以到bejson转中文,然后解析看一下,妥妥的json文件。
其实在这个文件里,我们需要的就一个heroId,因为在英雄详情页,有 1.js, 2.js,天真的我以为全部是按顺序排的,所以直接写了个循环去获取,后来发现不是,走过的坑就不带大家走一遍了,直接说结论,有 heroId,接下来就好办了,在英雄详情页可以找到这个文 https://game.gtimg.cn/images/lol/act/img/js/hero/1.js,这个文件也是一个标准的json文件,里面包含英雄的基本信息,还有皮肤信息。图片路径也在这里面。好了到目前为止准备工作是做好了。

2.爬虫第二步

准备工作做好了,接下来当然是开始写代码了。思路也很简单,首先读取hero_list.js,获取所有的heroId,然后拼装为这样的文件路径

url="https://game.gtimg.cn/images/lol/act/img/js/hero/"+str(c["heroId"])+".js"

接下来就是挨个去读取文件找到图片地址,下载图片就好了。这里面我稍稍做了点修改,包括创建文件夹的时候,是将英雄名称作为文件夹名,皮肤名字作为图片名字,因为不做修改的话,下下来的图片全部都是big1005.jpg,big1006.jpg,皮肤作为文件名字的话有些特殊的字符串需要去掉,文件名是不允许/出现的,英雄皮肤名字中有个K/D/A,具体是谁忘了,所以拿皮肤名字作为文件名的话,有些特殊字符需要去掉。好了,接下来放出完整代码。代码中写了很多注释,可以参考下。

#coding:utf8
import requests
import json
import os
import urllib.request
cur_path = os.path.abspath(os.curdir)champion = "https://game.gtimg.cn/images/lol/act/img/js/heroList/hero_list.js"
championobj =  json.loads(requests.get(champion).text)
heroIds = championobj['hero']
# print(championobj)
# # print(jsonobj)
for c in heroIds:print(c["heroId"])url="https://game.gtimg.cn/images/lol/act/img/js/hero/"+str(c["heroId"])+".js"# 发送请求,获取响应结果response = requests.get(url)text = response.text# 打印本次请求响应内容# print(text)# 将响应内容转换为Json对象jsonobj = json.loads(text)# print(jsonobj)#获取英雄名称作为文件夹名heroname =  jsonobj["hero"]["name"] print(heroname) isExists=os.path.exists(cur_path+'/所有皮肤图片/'+heroname)skinpath =cur_path+'/所有皮肤图片/'+heronameif not isExists:os.makedirs(cur_path+'/所有皮肤图片/'+heroname)# print(heroname)#获取所有的皮肤heroskins = jsonobj["skins"]# print(heroskins)for s in heroskins:skinname = str(s["name"]).replace(' ','-').replace('/','') #皮肤名字skinimage = str(s["mainImg"])  #皮肤图片路径if(len(skinimage)!=0): file_suffix = os.path.splitext(skinimage)[1]filename = '{}{}{}{}'.format(skinpath,os.sep,skinname,file_suffix)urllib.request.urlretrieve(skinimage,filename)# print(skinimage)

其实我写这个项目的时候,就是自己的一个非常偶然的想法,也是我刚学习python的一个练手项目,回头去百度上一查,呃,发现好多好多人已经写过获取英雄联盟图片的项目了,比我写的好多了。所以我的就参考一下就好。

源码已经放到上面了,公众号关不关注都行,就是佛系,就是任性。

爱游戏爱编程.jpg

用Python获取英雄联盟所有皮肤图片相关推荐

  1. Python获取英雄联盟的皮肤原画:新手玩家们都懵了!(一)

    本爬虫是为了经验交流,如果读者需要转载,请注明出处和链接 希望:喜欢博主的读者,可以点个关注~,更多精彩内容请收藏本栏目,不定期添加干货. 代码:如果你订阅了本专栏可以直接私信我,我可以发给你完整的代 ...

  2. python3爬虫之多线程爬取英雄联盟所有皮肤图片

    python3爬虫之多线程爬取英雄联盟所有皮肤图片 线程不要太高,容易出错,大约用时1分钟左右. import requests import json import os import thread ...

  3. 简易爬虫--50行代码获取英雄联盟全英雄皮肤

    50行代码搞定英雄联盟LOL全英雄皮肤下载 # 下载英雄联盟全英雄皮肤 import os import requestsdef downloadPic(heroIds, titles, names, ...

  4. Python获取英雄联盟皮肤原画:新手玩家们都懵了!

    前言 夜太美,爬虫就没那么危险 善于利用他人的UA 爬虫过程分析网页获取每一位英雄的ID值分析原画网页 结语 前言 学习py也有不少时间了,老是忘记写博客,我自己也是很无奈呀!作为会为代码而疯狂的啃书 ...

  5. 用Python获取英雄联盟皮肤原画?走过路过不要错过

    前言 作为喜欢读书的我,也是很喜欢打游戏的,之前看到有人爬王者荣耀的皮肤的,我可是王者荣耀的老玩家了,所以我把英雄联盟给爬了. 哈哈哈,没想到吧! 在本次的爬虫教程的过程中,我也会分享给大家一些简单实 ...

  6. 【Python爬虫】爬取英雄联盟所有皮肤图片实现千图成像~

    前文 本文主要分为两个部分 一部分是爬虫,这边是选择爬取英雄联盟官网英雄资料中的英雄皮肤图片,如下为新英雄seraphine的页面,包含英雄对应的所有皮肤: 另一部分是图片的合成,先将所有英雄皮肤图片 ...

  7. 爬取英雄联盟所有皮肤图片实现千图成像~

    前文 本文主要分为两个部分 一部分是爬虫,这边是选择爬取英雄联盟官网英雄资料中的英雄皮肤图片,如下为新英雄seraphine的页面,包含英雄对应的所有皮肤: 另一部分是图片的合成,先将所有英雄皮肤图片 ...

  8. python爬取英雄联盟所有皮肤价格表_利用Python协程来爬取LOL所有英雄的皮肤高清图片...

    最近有一朋友要LOL的数据进行数据分析,叫我帮他抓一下数据.突发奇想,顺便把英雄的所有皮肤下载到本地好了. PS: 安装了LOL的伙伴图片直接在LOL文件夹里面,可以百度寻找.此贴仅分享下技术思路以及 ...

  9. python下载英雄联盟皮肤

    这里写自定义目录标题 python--下载英雄联盟皮肤图片 程序源代码 python–下载英雄联盟皮肤图片 一个简单的代码,就可以把英雄联盟英雄全部的皮肤爬取下载以及保存到mongodb数据库中 因为 ...

最新文章

  1. 数组,字符串,指针,内存分配机制
  2. Azure SQL 数据库引入了新的服务级别
  3. 数据去重复_字典应用实例(每行每列都要去重复值)
  4. 当前版本与卡刷包android_Z2 Android 6.0.1卡刷包 23.5.0.486发布,快刷起来!(来自XDA)...
  5. 依赖注入原理 php,PHP依赖注入原理与用法分析
  6. JS 给某个对象添加专属方法
  7. 计算机考试用英语怎么说,“全国大学生计算机等级考试一级”英语怎么说?
  8. threejs获取模型坐标_Threejs倒影实现解析
  9. 炸掉卡西欧991CNX
  10. html 手机楼层布局,纯html、css、javascript实现楼层跳跃式的页面布局
  11. php中sha1,PHP中sha1()函数和md5()函数的绕过
  12. 在Makefile中进行宏定义-D
  13. PHP之内置web服务器
  14. Spark 1.0.0版本号公布
  15. puttygen convert ppk file to xshell key file
  16. 为什么要使用英英词典?
  17. wps 甘特图_项目管理/产品研发/建设施工/计划生成项目进度甘特图表教程
  18. 二叉树叶子结点个数统计
  19. 产品速递 | 璞华易投估值管理系统,灵活多样的数据模型让估值更加精准高效!
  20. MYSQL间隙锁详解

热门文章

  1. opensuse 装机踩坑日志
  2. VSC/SMC(十五)——基于模糊逼近的积分滑模控制
  3. java文件的读和写还有使用_java中文件读和写的操作
  4. 4921-字符串连接 ZCMU
  5. iptables防火墙详解(一)
  6. 【寻找最佳小程序】10期:小小房贷计算器——快捷、易用,小白购房必备
  7. 100个人排成一列,每次排除奇数序号,求最后剩下序号
  8. UPC 2020年秋季组队训练赛第十四场
  9. Description Type Target runtime Apache Tomcat v8.5 is not defined.
  10. 酒管房价代码之间的关系