前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >高清大图!手把手教你Python爬取LOL英雄皮肤套图

高清大图!手把手教你Python爬取LOL英雄皮肤套图

作者头像
Python与Excel之交
发布2021-08-05 15:16:57
9880
发布2021-08-05 15:16:57
举报
文章被收录于专栏:Python与Excel之交Python与Excel之交

Hi~大家好!

好久没写爬虫了,今天来爬取所有英雄的皮肤图片,本文依然会进行网页的分析

目标URL:

代码语言:javascript
复制
https://lol.qq.com/data/info-heros.shtml

里面是LOL所有英雄的头像和名称,本次的爬取任务是该网页中所有英雄的皮肤图片:

一、分析网页

点击任一英雄头像,进去该英雄的详情页,里面存放着该英雄的信息和皮肤图片,所以要获取该英雄皮肤就需要从前面的url中进入该详情页:

我们点击鼠标右键查看网页源代码,发现网页不存在我们需要的内容,可以肯定该网页是动态加载的:

进入浏览器的开发者工具抓包,这里我们成功的抓取到存放英雄皮肤图片的url:

对比几条url,发现url后面的数字会发生变动,是不规则的,是每条url特有的id值,所以我们需要从网页中获取:

代码语言:javascript
复制
https://game.gtimg.cn/images/lol/act/img/js/hero/1.js
https://game.gtimg.cn/images/lol/act/img/js/hero/2.js
https://game.gtimg.cn/images/lol/act/img/js/hero/11.js

进入主页面,该网页依然是动态加载的,所以我们需要进行抓包:

得到以下url:

代码语言:javascript
复制
https://game.gtimg.cn/images/lol/act/img/js/heroList/hero_list.js

里面的heroId就是我们需要的id值了:

二、爬取思路:

  • 从主页面抓包获取真实url,从该url中获取每个英雄详情页url的id值;
  • 利用id值拼接成每个英雄详情页的url;
  • 从拼接成的url中获取英雄名称、英雄皮肤名称、英雄皮肤图片的url。
三、实战代码

获取详情页url的id值函数,这里网页是json数据格式,所以用.json()进行解析,然后要yield进行返回:

代码语言:javascript
复制
def name_data():
    url = 'https://game.gtimg.cn/images/lol/act/img/js/heroList/hero_list.js'
    res = get_response(url).json()
    hero = res['hero']
    for i in hero:
        heroId = i['heroId']
        yield heroId

图片提取函数,这里的网页依然是用.json()进行提取,这里用os模块进行创建套图文件夹以及用英雄的名称进行命名文件夹,用英雄皮肤的名称+.jpg进行图片的保存:

代码语言:javascript
复制
def main_Img(html_url):
    res_ = get_response(html_url).json()
    skins = res_['skins']
    for e in skins:
        mainImg = e['mainImg']
        name = e['name']
        heroTitle = e['heroTitle']
        print(heroTitle)
        if not os.path.exists(f'./image/{heroTitle}/'):
            os.mkdir(f'./image/{heroTitle}/')
        file_name = f'image/{heroTitle}/' + name + '.jpg'
        save(mainImg, file_name)

创建并发任务:

代码语言:javascript
复制
executor = concurrent.futures.ThreadPoolExecutor(max_workers=10)
name_ = name_data()
for o in name_:
    url_data = f'https://game.gtimg.cn/images/lol/act/img/js/hero/{o}.js'
    executor.submit(main_Img, url_data)
executor.shutdown()
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-04-12,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Python与Excel之交 微信公众号,前往查看

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、分析网页
  • 三、实战代码
相关产品与服务
云开发 CLI 工具
云开发 CLI 工具(Cloudbase CLI Devtools,CCLID)是云开发官方指定的 CLI 工具,可以帮助开发者快速构建 Serverless 应用。CLI 工具提供能力包括文件储存的管理、云函数的部署、模板项目的创建、HTTP Service、静态网站托管等,您可以专注于编码,无需在平台中切换各类配置。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档