欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

利用python爬取LOL全皮肤

程序员文章站 2022-04-30 18:29:05
...

关于

在本次的爬虫中会利用到jsonpath,如果有想了解一下jsonpath不妨点一下传送门:https://blog.csdn.net/weixin_45859193/article/details/107081107

爬虫的思路
1.目标url地址
2.获取数据
3.解析数据
4.保存数据
知道这几步,那我们就开始实战吧!

*首先
*进入lol官网
1.点击里面英雄资料库
2.按下f12
3.找到hero_list.js的名字
4.解析他的js数据
json解析库传送门:https://www.json.cn/
5.获取id
6.到达第二层url
7.打开id.js的后缀
8.解析
9.保存

思路大概就是这样具体详细看代码吧,代码注释很多。

#这是一键爬取全部皮肤
import requests
import jsonpath
import os
from urllib.request import urlretrieve
#目标url
url='https://game.gtimg.cn/images/lol/act/img/js/heroList/hero_list.js'
#模拟浏览器
headers={'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.116 Safari/537.36'}
#解析数据
req=requests.get(url,headers=headers).json()

#获取id
id_1_key=jsonpath.jsonpath(req,'$..banAudio')

#定义一个空列表
items=[]

for id_1 in id_1_key:
    #分割id,取出id
    id_2=id_1.split('ban/')[1][0:-4]
    items.append(id_2)

for itme in items:
    #皮肤层的url
    new_url='https://game.gtimg.cn/images/lol/act/img/js/hero/{}.js'.format(itme)
    
    req=requests.get(new_url,headers=headers).json()
    #跳到这个位置
    skins=req["skins"]
    #皮肤
    mainImgs=jsonpath.jsonpath(skins,'$..mainImg')
    #名字
    names=jsonpath.jsonpath(skins,'$..name')
    
    #防止报错
    try:
        #判断英雄名字是否存在
        if not os.path.exists(names[0]):
            #创建英雄名文件夹

            os.mkdir(names[0])

        for name,mainImgs in zip(names,mainImgs):
            #保存数据
            urlretrieve(mainImgs,names[0]+"/"+name+".jpg")
            print(name+"100%")

    except:
        pass
    
                    

利用python爬取LOL全皮肤
利用python爬取LOL全皮肤
总结
这个代码其实还是存在bug的,比如有些图片是显示不出来的,还有是下载全部图片而且不能指定下载哪个图片,这些改进的代码等我有时间就把他写出来。