Python爬取LOL英雄皮肤

Python 爬虫 

一 实现分析

  1. 在官网上找到英雄皮肤的真实链接,查看多个后发现前缀相同,后面对应为英雄的ID和皮肤的ID,皮肤的ID从00开始顺序递增,而英雄ID跟网页中的顺序无关,需要找到英雄ID。
  2. 并没有在皮肤页面和英雄页面的元素中找到有关英雄ID的内容,所以想到有可能是通过js文件加载进来的。通过Chrome工具找到跟英雄ID有关的js文件网址。
  3. 通过js文件网址获得英雄ID。与图片真实网址进行拼接,得到所有英雄的所有皮肤的图片地址,保存到列表中。
  4. 设置图片保存的路径和文件名。
  5. 下载。

二 知识点与难点

  1. 通过re库来正则表达式的处理。
  2. 通过json将字符串转成字典类型。
  3. 图片地址和文件名称的拼接。
  4. 判断图片是否真实存在和下载。

三 代码

  1. '''

  2. 1. 找到图片路径,获取所有图片真实URL

  3. 2. 设置文件名

  4. 3. 下载

  5. '''


  6. import requests 

  7. import re 

  8. import json 


  9. def getLOLImages():


  10. # 包含英雄名字和ID的js文件路径

  11. js_url = "http://lol.qq.com/biz/hero/champion.js"


  12. # 获取js文件内容

  13. js_content = requests.get(js_url).text 


  14. # 截取需要的内容 .*? 代表所有内容

  15. req = '"keys":(.*?),"data"'

  16. # 取到的是列表,真正想要的是列表中的第一个元素

  17. js_want = re.findall(req, js_content)[0] 


  18. # 转成字典形式

  19. js_dict = json.loads(js_want) 


  20. # 获取图片的真实URL,并保存到列表中

  21. # http://ossweb-img.qq.com/images/lol/web201310/skin/big266000.jpg

  22. pic_url_list = [] 


  23. for hero_id in js_dict: 

  24. for skin_id in range(20): 

  25. skin_id = str(skin_id) 

  26. if len(skin_id) == 1: 

  27. num_str = '00' + skin_id 

  28. elif len(skin_id) == 2: 

  29. num_str = '0' + skin_id 


  30. pic_url = "http://ossweb-img.qq.com/images/lol/web201310/skin/big" + hero_id + num_str +".jpg"


  31. pic_url_list.append(pic_url) 


  32. # 设置文件名称

  33. path = "D://lol/"

  34. path_file_list = [] 

  35. for pic_name in js_dict.values(): 

  36. for skin_id in range(20): 

  37. skin_id = str(skin_id) 

  38. if len(skin_id) == 1: 

  39. num_str = '00' + skin_id 

  40. elif len(skin_id) == 2: 

  41. num_str = '0' + skin_id 


  42. path_file = path + pic_name + num_str + ".jpg"

  43. path_file_list.append(path_file) 


  44. # 下载

  45. n = 0

  46. for dl_url in pic_url_list: 

  47. # n += 1

  48. res = requests.get(dl_url) 

  49. if res.status_code == 200: 

  50. print("正在下载{}".format(path_file_list[n])) 

  51. with open(path_file_list[n], "wb") as f: 

  52. f.write(res.content) 


  53. n += 1



  54. if __name__ == '__main__': 

  55. getLOLImages() 

 


Python爬取LOL英雄皮肤的更多相关文章

  1. Python3爬虫使用requests爬取lol英雄皮肤

    本人博客:https://xiaoxiablogs.top 此次爬取lol英雄皮肤一共有两个版本,分别是多线程版本和非多线程版本. 多线程版本 # !/usr/bin/env python # -*- ...

  2. Python爬取 | 王者荣耀英雄皮肤海报

    这里只展示代码,具体介绍请点击下方链接. Python爬取 | 王者荣耀英雄皮肤海报 import requests import re import os import time import wi ...

  3. 利用python爬取王者荣耀英雄皮肤图片

    前两天看到同学用python爬下来LOL的皮肤图片,感觉挺有趣的,我也想试试,于是决定来爬一爬王者荣耀的英雄和皮肤图片. 首先,我们找到王者的官网http://pvp.qq.com/web201605 ...

  4. Python 爬取所有51VOA网站的Learn a words文本及mp3音频

    Python 爬取所有51VOA网站的Learn a words文本及mp3音频 #!/usr/bin/env python # -*- coding: utf-8 -*- #Python 爬取所有5 ...

  5. python爬取网站数据

    开学前接了一个任务,内容是从网上爬取特定属性的数据.正好之前学了python,练练手. 编码问题 因为涉及到中文,所以必然地涉及到了编码的问题,这一次借这个机会算是彻底搞清楚了. 问题要从文字的编码讲 ...

  6. python爬取某个网页的图片-如百度贴吧

    python爬取某个网页的图片-如百度贴吧 作者:vpoet mail:vpoet_sir@163.com 注:随意copy,不用告诉我 #coding:utf-8 import urllib imp ...

  7. Python:爬取乌云厂商列表,使用BeautifulSoup解析

    在SSS论坛看到有人写的Python爬取乌云厂商,想练一下手,就照着重新写了一遍 原帖:http://bbs.sssie.com/thread-965-1-1.html #coding:utf- im ...

  8. 使用python爬取MedSci上的期刊信息

    使用python爬取medsci上的期刊信息,通过设定条件,然后获取相应的期刊的的影响因子排名,期刊名称,英文全称和影响因子.主要过程如下: 首先,通过分析网站http://www.medsci.cn ...

  9. python爬取免费优质IP归属地查询接口

    python爬取免费优质IP归属地查询接口 具体不表,我今天要做的工作就是: 需要将数据库中大量ip查询出起归属地 刚开始感觉好简单啊,毕竟只需要从百度找个免费接口然后来个python脚本跑一晚上就o ...

随机推荐

  1. Python 执行js的2种解决方案-乾颐堂

    第1种方案 SpiderMonkey是Mozilla项目的一部分,是一个用C语言实现的JavaScript脚本引擎, 该引擎分析.编译和执行脚本,根据JS数据类型和对象的需要进行内存分配及释放操作:利 ...

  2. Python监控日志程序-乾颐堂

    一个简易的日志监控的脚本,功能如下:1.windows环境2.当匹配日志关键字时会发出声音,匹配的关键字不同,播放的声音不同3.能做到实时响应 注意:是在win环境下哦 直接上代码吧 1 2 3 4 ...

  3. 【#】Spring3 MVC 注解(一)---注解基本配置及@controller和 @RequestMapping 常用解释

    Spring3 MVC 注解(一)---注解基本配置及@controller和 @RequestMapping 常用解释 博客分类:  spring MVCSpringWebXMLBean  一:配置 ...

  4. redis 缓存用户账单策略

    最近项目要求分页展示用户账单列表,为提高响应使用redis做缓存,用到的缓存策略和大家分享一下. 需求描述:展示用户账单基本信息以时间倒序排序,筛选条件账单类型(所有,订单收入.提现.充值...). ...

  5. 大前端涉猎之前后端交互总结1: 软件架构与PHP搭建

    1 软件架构与PHP搭建 1.1 HTTP服务器(web服务器) 即( web服务器 )网站服务器,主要提供文档(文本.图片.视频.音频)web浏览服务,一般安装Apache.Nginx服务器软件. ...

  6. UVALive 7752 Free Figurines (瞎搞)

    题意:给定 n 个盒子,然后告诉你每个盒子在哪个盒子里,数值越大,盒子越大,给定你初态,和末态,问你最少要几步能完成,只有两种操作,一种是把一个盒子连同里面的小盒子放到一个空盒子里,另一种是把一个堆盒 ...

  7. Matlab神经网络

    1. <MATLAB神经网络原理与实例精解> 2. B站:https://search.bilibili.com/all?keyword=matlab&from_source=na ...

  8. 【小梅哥SOPC学习笔记】切换NIOS II CPU的主内存后软件中需要注意的几点设置

    切换NIOS II CPU的主内存后软件中需要注意的几点设置 有时候,我们可能面对这样一种情况: 1. 我们创建一个SOPC系统,并在QSYS中设置NIOS II的复位地址和异常地址都指向SRAM: ...

  9. 转载C#中Trim()、TrimStart()、TrimEnd()的用法

    C#中Trim().TrimStart().TrimEnd()的用法:    这三个方法用于删除字符串头尾出现的某些字符.Trim()删除字符串头部及尾部出现的空格,删除的过程为从外到内,直到碰到一个 ...

  10. MongoDB基础知识记录

    MongoDB基础知识记录 一.概念: 讲mongdb就必须提一下nosql,因为mongdb是nosql的代表作: NoSQL(Not Only SQL ),意即“不仅仅是SQL” ,指的是非关系型 ...