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

准备工作爬取皮肤本身并不难,难点在于分析,我们首先得得到皮肤图片的url地址,话不多说,我们马上来到王者荣耀的官网:

我们点击英雄资料,然后随意地选择一位英雄,接着F12打开调试台,找到英雄原皮肤的图片地址:

接着,我们切换一下英雄的皮肤,会发现图片地址没有明显的变化,只是最后的数字序号改变了,我们将两个皮肤图片的地址放在一起比较一下:

我们可以猜测,对于同一个英雄的皮肤图片地址,仅仅是最后的数字序号不同,为了证实我们的猜想,我们可以继续找出一个英雄的全皮肤图片,找一个皮肤多一点的,例如我这里找的是孙尚香,将它的所有皮肤图片地址放在一起比较:

由此我们得出结论,同一个英雄的皮肤图片路径从1开始依次递增,我们再来看看不同英雄之间是如何区分的。会发现,不管皮肤图片如何改变,浏览器上方的地址始终是不变的,所以我们将两个不同英雄的url地址放到一起比较一下:

乍一看,似乎没有什么规律,但我们要从这里发现一点,就是最后的数字其实控制的是哪个英雄,我们暂且认为它是英雄的编号,可不幸的是,英雄编号之间好像没有什么规律,不用着急,我们再到官网上找找线索。

在英雄资料界面,我们打开F12调试台,通过抓取网络请求,我发现了几个文件:

点击网络,然后点击XHR,就可以看到这几个文件,看到文件的名字大家应该就清楚了,这些文件存储的就是英雄列表信息,我们点击查看一下:

没错,这里存储的就是英雄信息,包括英雄的名字,英雄编号等等其它信息,我们可以试试这些信息的准确性,例如小乔的ename,也就是英雄编号为106,所以按照之前的想法,英雄小乔的详情地址应为:王者荣耀小乔-王者荣耀官网网站-腾讯游戏

经过尝试后发现确实如此。

到这里,准备工作就完成了,其实进行到这里,整个工程就完成了一半了,接下来就是代码的实现了。

代码实现

首先我们创建一个Python文件,然后导入os和requests模块。

那么我们首先就要通过这个地址获取到英雄列表信息的json数据,然后解析json数据,将有用的信息提取出来:

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())) # 提取英雄的编号

这样我们就获取到了英雄名字和编号,可以输出测试一下:

拿到了英雄编号之后,事情就变得很简单了,只需拼接一下url地址即可:

http://game.gtimg.cn/images/yxzj/img201606/skin/hero-info/' + hero_number + '/' + hero_number + '-bigskin-1.jpg,这样可以获取到所有英雄的皮肤图片了,但是这里会有一个问题,英雄的皮肤是有多有少的,有的英雄只有两个皮肤,有的却有六七个,所以图片编号的最大值我们并不清楚,这里我采用了一个比较笨的办法,就是让一个变量从1到10依次递增去拼接图片地址,如果遇到没有的图片我们就不处理,因为没有一个英雄的皮肤超过了10个,所以我们就能获取到所有的图片了。下面看代码实现:

# 下载图片

def downloadPic():

i = 0

for j in hero_number:

# 创建文件夹

os.mkdir("C:\\Users\\Administrator\\Desktop\\wzry\\" + hero_name[i])

# 进入创建好的文件夹

os.chdir("C:\\Users\\Administrator\\Desktop\\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) # 写入文件

实现非常地简单,代码注释也已经写得很清楚了,有了这个函数之后,我们只需调用一下,就可以下载图片了,整个程序的完整代码如下:

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("C:\\Users\\Administrator\\Desktop\\wzry\\" + hero_name[i])

# 进入创建好的文件夹

os.chdir("C:\\Users\\Administrator\\Desktop\\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()

除去注释,接近20行的代码我们就完成了王者荣耀全英雄皮肤的爬取,是不是非常简单呢?我们可以测试一下这个程序,首先要在桌面上创建一个文件夹,名为wzry,因为这里的代码我已经写死了,如果要修改的话大家也可以进行修改,文件夹创建完成后点击运行即可,等待片刻,图片就全部下载完成了。

对于程序中json字符串的解析,我们还可以使用jsonpath模块来进行,使用该模块能够更加快捷地获取到我们想要的信息,解析方式如下:

hero_name = jsonpath.jsonpath(html_json, "$..cname")

hero_number = jsonpath.jsonpath(html_json, "$..ename")

该方法接收一个json字符串和解析规则,$…cname则表示从根目录下找寻任意位置的以cname为键的值,并放入字典中。

结尾爬虫是非常有趣的,因为它非常直观,视觉冲击感强,写出来也很有成就感,爬虫虽然强大,但千万不能随意爬取隐私信息。

python爬虫脚本 初级入门爬虫英雄联盟所有皮肤_Python爬虫练习:20行Python代码爬取王者荣耀全英雄皮肤...相关推荐

  1. python游戏辅助lol_Python爬虫实战,60行代码爬取英雄联盟全英雄全皮肤,找寻曾今那些被删除的绝版皮肤...

    学了一周多的爬虫课后终于按捺不住了,小编决定自己手动编写爬虫程序,刚好LJ在鼓励学员分享成果,优秀作品有奖励,就把自己用Python编程爬取各大游戏高清壁纸的过程整理了出来进行投稿,与大家一起分享. ...

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

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

  3. python 20行代码爬取王者荣耀全英雄皮肤

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

  4. Python爬虫利用18行代码爬取虎牙上百张小姐姐图片

    Python爬虫利用18行代码爬取虎牙上百张小姐姐图片 下面开始上代码 需要用到的库 import request #页面请求 import time #用于时间延迟 import re #正则表达式 ...

  5. 教你用python实现34行代码爬取东方财富网信息,爬虫之路,永无止境!!

    教你用python实现34行代码爬取东方财富网信息,爬虫之路,永无止境!! 代码展示: 开发环境: windows10 python3.6 开发工具: pycharm weddriver 库: sel ...

  6. python pyquery不规则数据的抓取_爬虫神器之PyQuery实用教程(二),50行代码爬取穷游网...

    爬虫神器之PyQuery实用教程(二),50行代码爬取穷游网 前言 上篇文章 PyQuery (一) 回顾.今天来介绍具体 PyQuery 的使用方法. 穷游网目标与分析 开始之前,按照之前的套路一步 ...

  7. pyquery获取不到网页完整源代码_爬虫神器之PyQuery实用教程(二),50行代码爬取穷游网...

    爬虫神器之PyQuery实用教程(二),50行代码爬取穷游网 前言 上篇文章 PyQuery (一) 回顾.今天来介绍具体 PyQuery 的使用方法. 穷游网目标与分析 开始之前,按照之前的套路一步 ...

  8. python爬上市公司信息_实战项目 1:5 行代码爬取国内所有上市公司信息

    实战项目 1:5 行代码爬取国内所有上市公司信息 Python入门爬虫与数据分析 在正式开始这门专栏课的学习之前,我们先来看一个简单的爬虫案例.兴趣是最好的老师,当你对爬虫产生兴趣的时候,才会更有动力 ...

  9. Python爬取王者荣耀全英雄全皮肤图片

    Python爬取王者荣耀全英雄全皮肤图片 前言 思路 分析 编码 案例源码 附图 总结 前言 以前写过类似的博客,利用Java爬取王者荣耀全英雄全皮肤图片,当时是利用 jsoup包来对目标网页进行解析 ...

  10. 20行Python代码爬取王者荣耀全英雄皮肤改进版

    0 写在前面 看了大神的这篇CSDN:20行Python代码爬取王者荣耀全英雄皮肤访问量那么高,忍不住想要蹭一下热点,但是蹭归蹭,总得有点货才行,于是我品我细品,发现其代码总体有三点我觉得值得改进的地 ...

最新文章

  1. python经典案例-Python递归的经典案例
  2. 国内大数据开发中比较受欢迎的几款工具
  3. Python“制作”midi音乐“两只老虎”
  4. Linux磁盘管理详解
  5. 最新版QQ拼音打字法为什么打出来的字中间有竖线?
  6. 吐血推荐HZHControls:我见过最美的Winform控件库
  7. htc328d屏幕排线怎么换_详细的HTC T328D一键解锁教程(图文)
  8. 读书笔记_打开量化投资的黑箱02
  9. 笛卡尔积生成商品SKU
  10. Ubuntu安装pycharm专业版方法
  11. python简单实现爬取小说《天龙八部》,并在页面本地访问
  12. hba卡在服务器什么位置,设置服务器通过HBA卡启动目前服务器主流使用的是Qlogic和Emulex.doc...
  13. eighth day for learning
  14. 三大指数快速入门和应用
  15. Linux系统操作命令
  16. 有零基础开始学习python的小伙伴吗?学起来难吗?
  17. 音乐艺考生的视唱练耳小技巧
  18. 蒙特卡罗MCNP学习汇总(三)----源项基础(数据卡\源卡编写)
  19. google海底光缆图_Google 又规划了三条海底光缆,还嫌它的云服务速度不够快
  20. (离散数学)排列与组合

热门文章

  1. php首页有head,head是什么意思?
  2. 牛客网 完美世界2017校招技术综合A卷——部分
  3. 如何通过JS动态给li标签添加点击事件并跳转
  4. vivo Z3i标准版评测 强劲配置带来酣畅体验
  5. 雷神FFMpeg源码学习笔记
  6. 知识变现海哥:普通人知识变现的4种途径
  7. ThunderBoard与EFR32MG初印象-Silabs厦门workshop笔记
  8. windows 允许mysql的远程访问
  9. 移动端测试 APP启动性能分析 WebView性能分析 H5性能分析 卡顿分析 帧分析 CPU统计 网络流量分析 耗电量指标 弱网测试 健壮性测试 兼容性测试 Amdahl
  10. 摘要: Druid连接池一个设置引发的血案 -- 链接池出现问题