用Python爬取LOL所有的英雄信息以及英雄皮肤的示例代码


Posted in Python onJuly 13, 2020

实现思路:分为两部分,第一部分,获取网页上数据并使用xlwt生成excel(当然你也可以选择保存到数据库),第二部分获取网页数据使用IO流将图片保存到本地

一、爬取所有英雄属性并生成excel

1.代码

import json

import requests
import xlwt

# 设置头部信息,防止被检测出是爬虫
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'
}
url = "https://game.gtimg.cn/images/lol/act/img/js/heroList/hero_list.js"
response = requests.get(url=url, headers=headers).text
loads = json.loads(response)
dic = loads['hero']
# 创建一个workbook 设置编码
workbook = xlwt.Workbook(encoding='utf-8')
# 创建一个worksheet
worksheet = workbook.add_sheet('LOL')
try:
 for i in range(len(dic)):
  # 设置单元格宽度大小
  worksheet.col(i).width = 4000
  # 设置单元格高度大小
  style = xlwt.easyxf('font:height 300')
  worksheet.row(i).set_style(style)
  # 第一行用于写入表头
  if i == 0:
   worksheet.write(i, 0, '编号')
   worksheet.write(i, 1, '名称')
   worksheet.write(i, 2, '英文名')
   worksheet.write(i, 3, '中文名')
   worksheet.write(i, 4, '角色')
   worksheet.write(i, 5, '物攻')
   worksheet.write(i, 6, '物防')
   worksheet.write(i, 7, '魔攻')
   worksheet.write(i, 8, '魔防')
   continue
  worksheet.write(i, 0, dic[i - 1]['heroId'])
  worksheet.write(i, 1, dic[i - 1]['name'])
  worksheet.write(i, 2, dic[i - 1]['alias'])
  worksheet.write(i, 3, dic[i - 1]['title'])
  roles_ = dic[i - 1]['roles']
  roles = []
  for data in roles_:
   if 'mage' == data:
    roles.append('法师')
   if 'tank' == data:
    roles.append('坦克')
   if 'fighter' == data:
    roles.append('战士')
   if 'marksman' == data:
    roles.append('ADC')
   if 'assassin' == data:
    roles.append('刺客')
   if 'support' == data:
    roles.append('辅助')
  worksheet.write(i, 4, str(roles))
  worksheet.write(i, 5, dic[i - 1]['attack'])
  worksheet.write(i, 6, dic[i - 1]['defense'])
  worksheet.write(i, 7, dic[i - 1]['magic'])
  worksheet.write(i, 8, dic[i - 1]['difficulty'])
  # 保存
 workbook.save('C:\\Users\\Jonsson\\Desktop\\lol.xls')
except Exception as e:
 print(e)

2.效果

用Python爬取LOL所有的英雄信息以及英雄皮肤的示例代码

二、爬取所有英雄皮肤并保存到本地

1.代码

import json
import os

import requests
import xlwt

# 设置头部信息,防止被检测出是爬虫
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'
}
url = "https://game.gtimg.cn/images/lol/act/img/js/heroList/hero_list.js"
# 请求英雄列表的url地址
response = requests.get(url=url, headers=headers).text
loads = json.loads(response)
dic = loads['hero']
for data in dic:
 id_ = data['heroId']
 skinUrl = 'https://game.gtimg.cn/images/lol/act/img/js/hero/%s.js' % id_
 # 请求每个英雄皮肤的url地址
 skinResponse = requests.get(url=skinUrl, headers=headers).text
 json_loads = json.loads(skinResponse)
 hero_ = json_loads['hero']
 save_path = './skin/%s-%s-%s' % (hero_["heroId"], hero_['name'], hero_['title'])
 # 文件夹不存在,则创建文件夹
 folder = os.path.exists(save_path)
 if not folder:
  os.makedirs(save_path)
 skins_ = json_loads['skins']
 for data in skins_:
  if data['chromas'] == '0':
   content = requests.get(url=data['mainImg'], headers=headers).content
   try:
    with open('%s/%s.jpg' % (save_path, data['name']), "wb") as f:
     print("正在下载英雄:%s 皮肤名称:%s ..." % (hero_['name'], data['name']))
     f.write(content)
   except Exception as e:
    print('下载失败')
    print(e)

2.效果

用Python爬取LOL所有的英雄信息以及英雄皮肤的示例代码

用Python爬取LOL所有的英雄信息以及英雄皮肤的示例代码

到此这篇关于用Python爬取LOL所有的英雄信息以及英雄皮肤的示例代码的文章就介绍到这了,更多相关Python爬取LOL所有英雄内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
python中的函数用法入门教程
Sep 02 Python
python爬虫入门教程--利用requests构建知乎API(三)
May 25 Python
python多进程实现进程间通信实例
Nov 24 Python
Python实现简单网页图片抓取完整代码实例
Dec 15 Python
python3+PyQt5实现拖放功能
Apr 24 Python
利用python的socket发送http(s)请求方法示例
May 07 Python
python 集合 并集、交集 Series list set 转换的实例
May 29 Python
python中字符串内置函数的用法总结
Sep 13 Python
python爬虫超时的处理的实例
Dec 19 Python
使用python将多个excel文件合并到同一个文件的方法
Jul 09 Python
python关于调用函数外的变量实例
Dec 26 Python
解决python中0x80072ee2错误的方法
Jul 19 Python
python--shutil移动文件到另一个路径的操作
Jul 13 #Python
python virtualenv虚拟环境配置与使用教程详解
Jul 13 #Python
python 安装移动复制第三方库操作
Jul 13 #Python
基于Python爬取fofa网页端数据过程解析
Jul 13 #Python
python利用os模块编写文件复制功能——copy()函数用法
Jul 13 #Python
python 制作python包,封装成可用模块教程
Jul 13 #Python
通过Python实现Payload分离免杀过程详解
Jul 13 #Python
You might like
php环境下利用session防止页面重复刷新的具体实现
2014/01/09 PHP
PHP错误Allowed memory size of 67108864 bytes exhausted的3种解决办法
2014/07/28 PHP
仿dedecms下拉分页样式修改的thinkphp分页类实例
2014/10/30 PHP
php格式化金额函数分享
2015/02/02 PHP
php微信公众号开发之现金红包
2018/04/16 PHP
PHP中上传文件打印错误错误类型分析
2019/04/14 PHP
脚本吧 - 幻宇工作室用到js,超强推荐expand.js
2006/12/23 Javascript
Firefox和IE浏览器兼容JS脚本写法小结
2008/07/07 Javascript
jQuery的一些特性和用法整理小结
2010/01/13 Javascript
从零开始学习jQuery (六) jquery中的AJAX使用
2011/02/23 Javascript
Jquery中Ajax 缓存带来的影响的解决方法
2011/05/19 Javascript
基于jQuery的图片剪切插件
2011/08/03 Javascript
自己动手制作jquery插件之自动添加删除行功能介绍
2011/10/14 Javascript
js 判断一个元素是否在页面中存在
2012/12/27 Javascript
用Js实现的动态增加表格示例自己写的
2013/10/21 Javascript
javascript表单验证使用示例(javascript验证邮箱)
2014/01/07 Javascript
图片放大镜jquery.jqzoom.js使用实例附放大镜图标
2014/06/19 Javascript
JQuery中DOM加载与事件执行实例分析
2015/06/13 Javascript
js实现的tab标签切换效果代码分享
2015/08/25 Javascript
javascript基础知识之html5轮播图实例讲解(44)
2017/02/17 Javascript
关于vue.js组件数据流的问题
2017/07/26 Javascript
浅谈Koa服务限流方法实践
2017/10/23 Javascript
深入理解ES6中let和闭包
2018/02/22 Javascript
Node.js模块全局安装路径配置方法
2018/05/17 Javascript
详解基于node.js的脚手架工具开发经历
2019/01/28 Javascript
解决vue 使用axios.all()方法发起多个请求控制台报错的问题
2020/11/09 Javascript
Python闭包执行时值的传递方式实例分析
2018/06/04 Python
通过实例解析Python RPC实现原理及方法
2020/07/07 Python
在django中实现choices字段获取对应字段值
2020/07/12 Python
如何用Python编写一个电子考勤系统
2021/02/08 Python
美国滑雪板和装备购物网站:Skis.com
2018/12/20 全球购物
Trench London官方网站:高级风衣和意大利皮夹克
2020/07/11 全球购物
标准毕业生自荐信
2014/06/24 职场文书
农村优秀教师事迹材料
2014/08/27 职场文书
项目委托协议书(最新)
2014/09/13 职场文书
Python3的进程和线程你了解吗
2022/03/16 Python