Python爬取LOL英雄皮肤
Python爬取LOL英雄皮肤
一 实现分析
- 在官网上找到英雄皮肤的真实链接,查看多个后发现前缀相同,后面对应为英雄的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():
- # 包含英雄名字和ID的js文件路径
- js_url = "http://lol.qq.com/biz/hero/champion.js"
- # 获取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)
- # 获取图片的真实URL,并保存到列表中
- # http://ossweb-img.qq.com/images/lol/web201310/skin/big266000.jpg
- 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:
- # n += 1
- 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()

Python爬取LOL英雄皮肤的更多相关文章
- Python3爬虫使用requests爬取lol英雄皮肤
本人博客:https://xiaoxiablogs.top 此次爬取lol英雄皮肤一共有两个版本,分别是多线程版本和非多线程版本. 多线程版本 # !/usr/bin/env python # -*- ...
- Python爬取 | 王者荣耀英雄皮肤海报
这里只展示代码,具体介绍请点击下方链接. Python爬取 | 王者荣耀英雄皮肤海报 import requests import re import os import time import wi ...
- 利用python爬取王者荣耀英雄皮肤图片
前两天看到同学用python爬下来LOL的皮肤图片,感觉挺有趣的,我也想试试,于是决定来爬一爬王者荣耀的英雄和皮肤图片. 首先,我们找到王者的官网http://pvp.qq.com/web201605 ...
- Python 爬取所有51VOA网站的Learn a words文本及mp3音频
Python 爬取所有51VOA网站的Learn a words文本及mp3音频 #!/usr/bin/env python # -*- coding: utf-8 -*- #Python 爬取所有5 ...
- python爬取网站数据
开学前接了一个任务,内容是从网上爬取特定属性的数据.正好之前学了python,练练手. 编码问题 因为涉及到中文,所以必然地涉及到了编码的问题,这一次借这个机会算是彻底搞清楚了. 问题要从文字的编码讲 ...
- python爬取某个网页的图片-如百度贴吧
python爬取某个网页的图片-如百度贴吧 作者:vpoet mail:vpoet_sir@163.com 注:随意copy,不用告诉我 #coding:utf-8 import urllib imp ...
- Python:爬取乌云厂商列表,使用BeautifulSoup解析
在SSS论坛看到有人写的Python爬取乌云厂商,想练一下手,就照着重新写了一遍 原帖:http://bbs.sssie.com/thread-965-1-1.html #coding:utf- im ...
- 使用python爬取MedSci上的期刊信息
使用python爬取medsci上的期刊信息,通过设定条件,然后获取相应的期刊的的影响因子排名,期刊名称,英文全称和影响因子.主要过程如下: 首先,通过分析网站http://www.medsci.cn ...
- python爬取免费优质IP归属地查询接口
python爬取免费优质IP归属地查询接口 具体不表,我今天要做的工作就是: 需要将数据库中大量ip查询出起归属地 刚开始感觉好简单啊,毕竟只需要从百度找个免费接口然后来个python脚本跑一晚上就o ...
随机推荐
- 转载 二十篇java技术热文
转自微信公众号:java知音 1,详解java类的生命周期 2,Java反射最佳实践 3,Spring的IOC原理 4,Java并发编程:volatile关键字解析 5,Java Thread 总结 ...
- [欣赏代码片段] (JavaScript) 你使用过getComputedStyle没有
(function() { // IE8 ployfill for GetComputed Style (for Responsive Script below) if (!window.getCom ...
- jquery 常用工具方法
inArray(value, array [, fromIndex ])方法类似于原生javascript的indexOf()方法,没有找到匹配元素时它返回-1.如果数组第一个元素匹配参数,那么$.i ...
- ENVI 图像特征提取
- 编写高质量代码改善C#程序的157个建议——建议139:事件处理器命名采用组合方式
建议139:事件处理器命名采用组合方式 所谓事件处理器,就是实际被委托执行的那个方法.查看如下代码: public MainWindow() { InitializeComponent(); Butt ...
- Finding Memory Leaks with SAP Memory Analyzer
Introduction There is a common understanding that a single snapshot of the java heap is not enough f ...
- Spring Cache介绍和使用
Spring Cache 缓存是实际工作中非经常常使用的一种提高性能的方法, 我们会在很多场景下来使用缓存. 本文通过一个简单的样例进行展开,通过对照我们原来的自己定义缓存和 spring 的基于凝视 ...
- hdu 4284 Travel(壮压DP&TSP&floyd)
Travel Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Su ...
- MyBatis 一级缓存避坑
MyBatis 一级缓存(MyBaits 称其为 Local Cache)无法关闭,但是有两种级别可选: package org.apache.ibatis.session; /** * @autho ...
- redis内部数据结构
redis内部数据结构,是指redis在自身的构建中,基于这些特定的内部数据结构进行的. 简单动态字符串:Simple Dynamic String 双端链表 字典:Dictonary 跳跃表:ski ...