利用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
总结
这个代码其实还是存在bug的,比如有些图片是显示不出来的,还有是下载全部图片而且不能指定下载哪个图片,这些改进的代码等我有时间就把他写出来。
上一篇: 字符串分割重组字符串方法
下一篇: 字符串的分割