网页爬虫-全套皮肤图片爬取-Python项目

 


点击下载源码

  《英雄联盟》是一款火爆全网十几年的网络游戏,许多英雄原画和皮肤的图片非常的惊艳,拿来做壁纸或者宣传海报都十分的精美。因此我想设计个python脚本来爬取这些精美的皮肤图片。既增加了我对编程的兴趣,也可以掌握一门爬虫技能。

第一章  任务概述

首先,在《英雄联盟》官网找到资源库,在对应皮肤页面下右键查看页面源代码以及检查,进行页面分析。其次,在Pycharm里编码,将图片的url下载到本地。然后,在几个重要的js文件里利用正则表达式进行匹配,拼接得到正确的图片url,通过requests的get方法访问下载。最后,通过os新建文件夹,分类好保存图片。

值得注意的是,为了防止被网页检测到是爬虫,需要设置休眠时间,利用sleep()函数进行休眠控制。

第二章  算法设计思想

1.分析网站的方法:  (1)静态网页;      (2)动态网页(本实验爬取动态)

    2.解析JS文件:

表1 JS文件返回的数据

纯JSON (形如{“key”:”value”})

jsonpath、dict、re

纯JS+JSON

str+jsonpath、re

字符串

re

3.可能遇到的问题:

        ·编码问题:\ud3e \\ud1a

        ·解决方案:str.encode().decode(‘unicode_escape’)

    4.爬虫下载图片实际就是接收数据流:

        ·判断是否存在文件夹

           os.path.exists(file_path)

        ·创建文件夹

           os.mkdir(file_path)

        ·创建文件

           open(file_path,’wb’)

    5. 在《英雄联盟》官网找到资料库,打开该页面选择一个英雄。

 

图1 《英雄联盟》官网资料库

     6.右键点击检查,在Network里找到champion.js文件,可以看到里面有全部的英雄json信息,在Headers里记录下url:   https://lol.qq.com/biz/hero/champion.js

 

图2 所有英雄的json信息

    7.查看某个英雄皮肤的json信息,分析其url,利用正则表达式拼接起来,形成完整图片的url,以下展示核心代码:

 

skin_ids = re.findall(r'"id":"(\d+?)"',hero_info_js)
for id,name in zip(skin_ids,skin_names):
    img_url = f'https://game.gtimg.cn/images/lol/act/img/skin/big{id}.jpg'

8.解决一些皮肤名称出现‘\’而引起的错误,例如阿狸的K\DA 这款皮肤。
#解决皮肤名称里的‘\’引起的错误
name = name.replace('/','')
name = name.replace('\\','')

9.创建文件夹分类保存每个英雄的多个皮肤。
if not os.path.exists(f'./img/{n}'):
    os.makedirs(f'./img/{n}')
with open(f'./img/{n}/{name}.jpg','wb') as f:
    f.write(img_resp.content)
    sleep(1)

第三章 测试结果

    1.设计了print函数打印输出当前正在爬取的图片,便于及时发现错误。

 

图3 print打印输出正在爬取的图片

    2.在右侧指定文件夹内,便可以发现爬取到的英雄皮肤。

 

图4 爬取的英雄剑魔皮肤图片

 

图5 爬取的英雄安妮皮肤图片

3.打开磁盘里的文件目录,可以发现皮肤被整齐的规划到不同英雄的文件夹内。

 

图6 划归整齐的皮肤文件夹

点击下载源码

posted @   北冥有鱼2001  阅读(130)  评论(1编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
点击右上角即可分享
微信分享提示