-
Python爬取LOL英雄皮肤
Python爬取LOL英雄皮肤
Python 爬虫
一 实现分析
- 在官网上找到英雄皮肤的真实链接,查看多个后发现前缀相同,后面对应为英雄的ID和皮肤的ID,皮肤的ID从00开始顺序递增,而英雄ID跟网页中的顺序无关,需要找到英雄ID。
- 并没有在皮肤页面和英雄页面的元素中找到有关英雄ID的内容,所以想到有可能是通过js文件加载进来的。通过Chrome工具找到跟英雄ID有关的js文件网址。
- 通过js文件网址获得英雄ID。与图片真实网址进行拼接,得到所有英雄的所有皮肤的图片地址,保存到列表中。
- 设置图片保存的路径和文件名。
- 下载。
二 知识点与难点
- 通过re库来正则表达式的处理。
- 通过json将字符串转成字典类型。
- 图片地址和文件名称的拼接。
- 判断图片是否真实存在和下载。
三 代码
- '''
- 1. 找到图片路径,获取所有图片真实URL
- 2. 设置文件名
- 3. 下载
- '''
- import requests
- import re
- import json
- def getLOLImages():
- js_url = "http://lol.qq.com/biz/hero/champion.js"
- js_content = requests.get(js_url).text
- req = '"keys":(.*?),"data"'
- js_want = re.findall(req, js_content)[0]
- js_dict = json.loads(js_want)
- pic_url_list = []
- for hero_id in js_dict:
- for skin_id in range(20):
- skin_id = str(skin_id)
- if len(skin_id) == 1:
- num_str = '00' + skin_id
- elif len(skin_id) == 2:
- num_str = '0' + skin_id
- pic_url = "http://ossweb-img.qq.com/images/lol/web201310/skin/big" + hero_id + num_str +".jpg"
- pic_url_list.append(pic_url)
- path = "D://lol/"
- path_file_list = []
- for pic_name in js_dict.values():
- for skin_id in range(20):
- skin_id = str(skin_id)
- if len(skin_id) == 1:
- num_str = '00' + skin_id
- elif len(skin_id) == 2:
- num_str = '0' + skin_id
- path_file = path + pic_name + num_str + ".jpg"
- path_file_list.append(path_file)
- n = 0
- for dl_url in pic_url_list:
- res = requests.get(dl_url)
- if res.status_code == 200:
- print("正在下载{}".format(path_file_list[n]))
- with open(path_file_list[n], "wb") as f:
- f.write(res.content)
- n += 1
- if __name__ == '__main__':
- getLOLImages()
-
相关阅读:
关于html元素Css样式设置的一点心得(特别是与位置有关的,还有外边距、内边距有关的那些)
【idea的一个安装细节】是不是使用idea不能连接网络了?
html中a标签属性parent和self的举例说明
关于jquery的each的操作;
superagent中文文档
mongoose 查询子文档的方法
Object.prototype.toString.call()进行类型判断
局部函数的直接引用与调用
数据模型中某个字段是单选或者多选的定义方式;
nodejs项目中的路由写法
-
原文地址:https://www.cnblogs.com/banshaohuan/p/9368045.html
Copyright © 2020-2023
润新知