关于
在本次的爬虫中会利用到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的,比如有些图片是显示不出来的,还有是下载全部图片而且不能指定下载哪个图片,这些改进的代码等我有时间就把他写出来。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/66878.html