专栏首页Python爬虫与数据分析Python爬虫获取王者荣耀皮肤高清图

Python爬虫获取王者荣耀皮肤高清图

使用Google浏览器,Python版本3.6.5,

打开王者荣耀官网,按F12打开调试界面,点击Network按F5刷新,找到herolist.json。点击右键复制地址

http://pvp.qq.com/web201605/js/herolist.json

然后开始代码:获取这个Json文件里的内容


import urllib.request

import json

import os

response = urllib.request.urlopen("http://pvp.qq.com/web201605/js/herolist.json")

hero_json = json.loads(response.read())

hero_num = len(hero_json)

print(hero_json)

print("hero_num: ", str(hero_num))

print('------------------------')

运行代码:

获取一个英雄的英雄名、皮肤名和皮肤数量

hero_name = hero_json[0]['cname']

skin_names = hero_json[0]['skin_name'].split('|')

skin_num = len(skin_names)

print('hero_name : ', hero_name)

print('skin_name: ', skin_names)

print('skin_num', skin_num)


运行代码:

接下来就是获取皮肤的高清图了:

在官网页面打开王者资料页面,点击英雄图片进入(这里是孙策),继续前面的操作,按F12,按F5刷新,找到皮肤图片,复制图片地址http://game.gtimg.cn/images/yxzj/img201606/skin/hero-info/510/510-bigskin-1.jpg

继续代码:根据获取到的网址,在代码里拼所要获取图片的网址(510代表的是json中的ename,1是第几个皮肤)

for i in range(hero_num):

for cnt in range(len(skin_names)):

save_file_name = 'F:\heroskin\\' + str(hero_json[i]['ename']) + '-' + hero_json[i]['cname'] + '-' + skin_names[cnt] + '.jpg'

skin_url = 'http://game.gtimg.cn/images/yxzj/img201606/skin/hero-info/' + str(hero_json[i]['ename']) + '/' + str(hero_json[i]['ename']) + '-bigskin-' + str(cnt+1) + '.jpg'

if not os.path.exists(save_file_name):

urllib.request.urlretrieve(skin_url, save_file_name)

完整代码:

import urllib.request

import json

import os

response = urllib.request.urlopen("http://pvp.qq.com/web201605/js/herolist.json")

hero_json = json.loads(response.read())

hero_num = len(hero_json)

print(hero_json)

print("hero_num: ", str(hero_num))

print('------------------------')

hero_name = hero_json[0]['cname']

skin_names = hero_json[0]['skin_name'].split('|')

skin_num = len(skin_names)

print('hero_name : ', hero_name)

print('skin_name: ', skin_names)

print('skin_num', skin_num)

# 文件不存在则创建

save_dir = 'F:\heroskin'

if not os.path.exists(save_dir):

os.mkdir(save_dir)

for i in range(hero_num):

# 获取皮肤名称列表

skin_names = hero_json[i]['skin_name'].split('|')

if hero_json[i]['ename'] == 189:

json_skin_name = {'skin_name': '阿摩司公爵|万物有灵'}

skin_names = json_skin_name['skin_name'].split('|')

for cnt in range(len(skin_names)):

save_file_name = 'F:\heroskin\\' + str(hero_json[i]['ename']) + '-' + hero_json[i]['cname'] + '-' + \

skin_names[cnt] + '.jpg'

skin_url = 'http://game.gtimg.cn/images/yxzj/img201606/skin/hero-info/' + str(

hero_json[i]['ename']) + '/' + str(hero_json[i]['ename']) + '-bigskin-' + str(cnt + 1) + '.jpg'

if not os.path.exists(save_file_name):

urllib.request.urlretrieve(skin_url, save_file_name)

continue

for cnt in range(len(skin_names)):

# 保存的图片名

save_file_name = 'F:\heroskin\\' + str(hero_json[i]['ename']) + '-' + hero_json[i]['cname'] + '-' + skin_names[cnt] + '.jpg'

# 拼接的url

skin_url = 'http://game.gtimg.cn/images/yxzj/img201606/skin/hero-info/' + str(hero_json[i]['ename']) + '/' + str(hero_json[i]['ename']) + '-bigskin-' + str(cnt+1) + '.jpg'

# 防止代码出错,重新运行后避免重复下载

if not os.path.exists(save_file_name):

# 使用request.urlretrieve模块

urllib.request.urlretrieve(skin_url, save_file_name)


问题:

不知道是不是腾讯故意的还是我获取的方式有问题,获取的json文件鬼谷子的皮肤名是一段文字,

获取的时候就会出错,最后使用最笨的办法解决,重新创建了鬼谷子皮肤名的json文件,

这样就可以完全获取全部的英雄皮肤图片。


本文分享自微信公众号 - Python爬虫scrapy(python_scrapy),作者:Andrew

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2018-08-03

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • GlidedSky 字体加密1

    还是这个网站,字体加密1, 不过这个 1 比较简单。我会写的很详细,大佬轻喷,内容适合新手小白看,也是自己记录一下,方便自己理解查看。

    andrew_a
  • win10下安装GPU版本的TensorFlow(cuda + cudnn)

    搭了将近快两天的环境,终于好了,虽然在开始的时候,安了卸,卸了安的,但是!!!安装成功后,那种快乐是无法言语的~~~~~所以在此我必须的记录一下我的艰辛历程~~...

    andrew_a
  • python数据处理

    在数据分析的时候,原始数据或多或少都会存在大量的不完整、不一致,等异常的数据,会严重影响到数据分析的工作。经常遇到的数据清洗大都是处理缺失数据,清除无意...

    andrew_a
  • Python爬虫:十几行代码下载王者荣耀所有皮肤

    之前接触过爬虫还是几年前爬取豆瓣电台的歌曲,那时候用的C++,json解析还要用第三方库,总之很麻烦。最近接触到了python,深深的感觉这门语言真好。

    王强
  • Python爬虫:十几行代码下载王者荣耀所有皮肤

    之前接触过爬虫还是几年前爬取豆瓣电台的歌曲,那时候用的C++,json解析还要用第三方库,总之很麻烦。最近接触到了python,深深的感觉这门语言真好。

    王强
  • 后台系统设计(下篇:输入)

    ·容错格式,允许用户输入多种格式,并智能的处理从而满足程序的数据要求。例如电话输入,允许用户输入空格和 —,系统后台自动清理数据以满足格式要求,而不是报错提示。

    霖酱
  • Django实现的线上系统

    这是我的课设使用django实现闲时时间规划,感觉我们小组最后成果较好,如果完全遗忘在时间中比较可惜,所以想整理发布出来,万一有人给我投资呢(笑cry),之后应...

    Donuts_choco
  • ps切图技巧 原

    5、回到多个图层的文件名下,图层已改变颜色,这种情况下多个图层都改成同一个颜色,如果我们需要只改变其中一个图层的颜色,把不需要改变颜色的图层锁定即可

    tianyawhl
  • 业界|搜狗茹立云:AI产品构思指南

    我们已经不是第一次提到,AI一方面炒的沸沸扬扬,一方面我们放眼望去,市场上居然看不到一个能让我们心服口服的,用AI技术支撑起来的产品。AI出问题了吗?Alpha...

    AI科技评论
  • 如何自定义Jetson NANO 40-pin 扩展头

    默认情况下,所有接口信号引脚都配置为GPIO输入,除了引脚3和5、引脚27和28 (I2C SDA和SCL)、引脚8和10 (UART TX和RX)。

    GPUS Lady

扫码关注云+社区

领取腾讯云代金券