前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >用Python爬取王者荣耀英雄皮肤海报图

用Python爬取王者荣耀英雄皮肤海报图

作者头像
Eternity
发布2022-08-24 20:02:13
5650
发布2022-08-24 20:02:13
举报

介绍

在某平台公开课上学了怎么用python爬取王者的全英雄皮肤海报图,然后自己敲了一遍,发现还不错,把图片全部都爬取下来了,本来想用来做壁纸,但是一看,实在太丑,然后。。然后就不知道这些图片能干啥了。现在就来分享一些爬取王者海报图的思路。

思路

1,确定爬取的url路径

2,发送请求,一般需要模拟浏览器发送,需要用到 requests

3,解析数据,需要用json模块,json模块可以把json字符串转换换成Python可交互的数据

4,保存数据

开始

第一步

确定爬取的url路径

代码语言:javascript
复制
#在王者官网打开检查
base_url = 'https://pvp.qq.com/web201605/js/herolist.json'

第二步

模拟浏览器发送请求 这里要用到requests 获取响应数据

代码语言:javascript
复制
response = requests.get(base_url)
data_str = response.text  #--字符串

第三步

解析数据,要用到json模块,json模块可以把 json字符串转化成python可交互的数据类型,

1,转换数据类型

代码语言:javascript
复制
data_list = json.loads(data_str) 

2,解析数据

代码语言:javascript
复制
for data in data_list:
    # 提取图片所需参数
    ename = data['ename']  # 英雄编号
    cname = data['cname']  # 英雄名字
    try:
        skin_name = data['skin_name'].split('|')  # 切割皮肤的名字,用于计算每个英雄有多少个皮肤
    except Exception as e:
        print(e)
 
    # http://game.gtimg.cn/images/yxzj/img201606/skin/hero-info/524/524-bigskin-1.jpg
    #这是其中一个图片的url
    # http://game.gtimg.cn/images/yxzj/img201606/skin/hero-info/ + 英雄编号 + "/" + 英雄编号-bigskin-皮肤序号 + ".jpg"
    #这是图片url的格式

3,构建皮肤数量循环(使用for循环)

代码语言:javascript
复制
for skin_num in range(1, len(skin_name) + 1):
        skin_url = 'http://game.gtimg.cn/images/yxzj/img201606/skin/hero-info/' + str(ename) + '/' + str(
            ename) + '-bigskin-' + str(skin_num) + '.jpg'

4,请求图片数据

代码语言:javascript
复制
skin_data = requests.get(skin_url).content

第四步

保存数据

代码语言:javascript
复制
with open('img\\' + cname + "-" + skin_name[skin_num - 1] + '.jpg', 'wb') as f:
            print('正在下载皮肤:', cname + "-" + skin_name[skin_num - 1])
            f.write(skin_data)

到这里就差不多结束了

完整代码

下面是一个完整代码

代码语言:javascript
复制
base_url = 'https://pvp.qq.com/web201605/js/herolist.json'
response = requests.get(base_url)
data_str = response.text
data_list = json.loads(data_str)
for data in data_list:
    ename = data['ename']  # 英雄编号
    cname = data['cname']  # 英雄名字
    try:
        skin_name = data['skin_name'].split('|')
    except Exception as e:
        print(e)
    for skin_num in range(1, len(skin_name) + 1):
        skin_url = 'http://game.gtimg.cn/images/yxzj/img201606/skin/hero-info/' + str(ename) + '/' + str(
            ename) + '-bigskin-' + str(skin_num) + '.jpg'
        skin_data = requests.get(skin_url).content
        with open('img\\' + cname + "-" + skin_name[skin_num - 1] + '.jpg', 'wb') as f:
            print('正在下载皮肤:', cname + "-" + skin_name[skin_num - 1])
            f.write(skin_data) 

注意:要在目录下新建一个img的文件夹

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2020-03-30,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 介绍
  • 思路
  • 开始
    • 第一步
      • 第二步
        • 第三步
          • 第四步
          • 完整代码
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档