python技能描述_【python】利用python爬虫 将LOL所有英雄的技能介绍给爬取下来

2023-11-03

工欲善其事  必先利其器

要想玩好LOL,那了解所有英雄的技能必然是其最基本的。所以此爬虫就应运而生

运行环境

python 3.7

此爬虫所用的库有

requests (获取网页信息)

openpyxl (Excel相关操作)

pymysql (MySQL数据库相关操作)

re (正则)

代码

下面有已打包为EXE的程序,可直接使用

主要代码

import requests

import re

import openpyxl

import pymysql

def get_html(hero):

headers = {

'Referer': 'http://lol.qq.com/web201310/info-defail.shtml?id=' + hero,

'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.106 Safari/537.36',

}

url = 'http://lol.qq.com/biz/hero/' + hero + '.js'

# print(url)

response = requests.get(url, headers=headers)

response = response.text

return response

def hero_info(response):

# 英雄名称

hero_name = re.findall(r'"name":"(.*?)","title"', response, re.S)[0]

hero_title = re.findall(r'"title":"(.*?)","tags"', response, re.S)[0]

# 技能(QWER)

hero_spells = re.findall(r'"spells":(.*?),"passive"', response, re.S)[0]

# 技能名称

hero_spells_name = re.findall(

r'"name":"(.*?)","description"', hero_spells, re.S)

# 技能描述

hero_spells_description = re.findall(

r'"description":"(.*?)","image"', hero_spells, re.S)

# 技能消耗

hero_spells_resource = re.findall(

r'"resource":"(.*?)"}', hero_spells, re.S)

# 技能主被动

hero_spells_group = re.findall(r'"group":"(.*?)","x"', hero_spells, re.S)

spells_Q = hero_spells_name[0] + ':' + hero_spells_description[0] + \

'|' + hero_spells_resource[0] + '|' + hero_spells_group[0]

spells_W = hero_spells_name[1] + ':' + hero_spells_description[1] + \

'|' + hero_spells_resource[1] + '|' + hero_spells_group[1]

spells_E = hero_spells_name[2] + ':' + hero_spells_description[2] + \

'|' + hero_spells_resource[2] + '|' + hero_spells_group[2]

spells_R = hero_spells_name[3] + ':' + hero_spells_description[3] + \

'|' + hero_spells_resource[3] + '|' + hero_spells_group[3]

Spells = spells_Q + '\n' + spells_W + '\n' + spells_E + '\n' + spells_R

# 被动技能

hero_passive = re.findall(r'"passive":(.*?),"lore"', response, re.S)[0]

# 被动技能名称

hero_passive_name = re.findall(

r'"name":"(.*?)","description"', hero_passive, re.S)[0]

# 技能描述

hero_passive_description = re.findall(

r'"description":"(.*?)","image"', hero_passive, re.S)[0]

# 技能主被动

hero_passive_group = re.findall(

r'"group":"(.*?)","x"', hero_passive, re.S)[0]

passive = hero_passive_name + ':' + \

hero_passive_description + '|' + hero_passive_group

hero_spells_info = [hero_name, hero_title, passive, Spells]

return hero_spells_info

def get_hero():

with open('hero', 'r') as f:

hero = f.readlines()

return hero

def save_to_excel(her):

wb = openpyxl.Workbook()

ws = wb.active

ws['A1'] = '英雄称号'

ws['B1'] = '英雄名称'

ws['C1'] = '被动技能'

ws['D1'] = '主动技能'

for hero in her:

ws.append(hero)

wb.save('herotest.xlsx')

def save_to_mysql(her):

for i in her:

ch = '"' + i[0] + '"'

name = '"' + i[1] + '"'

bd_name = '"' + i[2] + '"'

zd_name = '"' + i[3] + '"'

db = pymysql.connect(host='localhost', user='root',

password='123456', database='python_mysql', charset='utf8')

cursor = db.cursor()

sql = ''' insert into lolheroinfo values (%s, %s, %s, %s);

''' % (ch, name, bd_name, zd_name)

# print(sql)

try:

# 执行sql语句

cursor.execute(sql)

# 提交到数据库执行

db.commit()

print(ch, ' insert into success!')

except:

db.rollback()

db.close()

return True

def main():

heros = get_hero()

her = []

for hero in heros:

hero = hero.split('"')[3]

response = get_html(hero)

her_infos = hero_info(response)

her_encode = []

for i in her_infos:

i = i.encode("latin-1").decode("unicode_escape")

her_encode.append(i)

her.append(her_encode)

save_to_excel(her)

#save_to_mysql(her)

if __name__ == '__main__':

main()

获取英雄数据文件

运行此文件后会在当前目录下生产hero的数据文件

import requests

import re

headers = {

'Referer': 'https://lol.qq.com/data/info-defail.shtml?id=Aatrox',

'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.77 Safari/537.36',

}

response = requests.get('https://lol.qq.com/biz/hero/champion.js', headers=headers)

keys = re.findall(r'"keys":{(.*?)},"data"',response.text,re.S)

keys = keys[0]

keys = keys.split(',')

with open('hero','w') as f:

for key in keys:

f.write(key)

f.write('\n')

print(key)

_如果想要保存到MySQL,请先创建MySQL数据库,然后用下面的代码创建表,最后取消主代码save_tomysql(her)的注释即可

创建数据表代码

#!/usr/bin/python3

import pymysql

# 打开数据库连接

db = pymysql.connect("localhost","root","123456","python_mysql" )

# 使用 cursor() 方法创建一个游标对象 cursor

cursor = db.cursor()

# 使用 execute() 方法执行 SQL,如果表存在则删除

cursor.execute("DROP TABLE IF EXISTS EMPLOYEE")

# 使用预处理语句创建表

sql = """CREATE TABLE lolheroinfo (

英雄称号  CHAR(255),

英雄名称 CHAR(255),

被动技能 CHAR(255),

主动技能 varchar(999)

)

"""

cursor.execute(sql)

# 关闭数据库连接

db.close()

Excel版:

MySQL版:

下面是上文代码打包为EXE版(pyinstaller)

主文件(Excel版):https://www.lanzous.com/i2dnmvg

主文件(MySQL版):https://www.lanzous.com/i2dnmej

数据文件:https://www.lanzous.com/i2dnn9a  (必要文件,运行主文件时要读取他的信息。或者可以运行下面的 获取数据文件 进行自动生成)

获取数据文件:https://www.lanzous.com/i2dnm7c  (运行后会自动生成最新的数据文件)

最后温馨提示请合理使用爬虫

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

python技能描述_【python】利用python爬虫 将LOL所有英雄的技能介绍给爬取下来 的相关文章

  • BlogTest1

    常见数据结构题 SparseArray SparseBooleanArray HashMap
  • 安防监控视频云存储平台EasyNVR出现内核报错的情况该如何解决?

    安防视频监控汇聚EasyNVR视频集中存储平台 是基于RTSP Onvif协议的安防视频平台 可支持将接入的视频流进行全平台 全终端分发 分发的视频流包括RTSP RTMP HTTP FLV WS FLV HLS WebRTC等格式 近期有
  • 【全教程】Pycharm运行深度强化学习代码(pytho与matlab混编)

    记录自己运行的第一个深度强化学习项目的全过程 配置环境花了4h 代码终于跑起来啦 配置环境 下面是具体的配置流程 首先报的第一个错误是 ModuleNotFoundError No module named matlab engine ma
  • Arduino和LabVIEW射频灾害紧急报警系统

    该项目将在发生灾难时生成紧急警报 该系统分为两部分 传感器节点和 2 服务器 连接该开关阵列以在处理端生成紧急信号 然后将其发送到传感器节点 图1给出了系统框图 物料清单 接线 原理图 代码 传感器节点端代码 处理端代码 仿真模型 LabV
  • 【实验五】【创建视图并通过视图操作表数据】

    文章目录 视图 原表 一 创建视图 二 插入数据 三 更新数据 四 删除数据 Reference 视图 简介 视图可以看作定义在SQL Server上的虚拟表 视图正如其名字的含义一样 是另一种查看数据的入口 常规视图本身并不存储实际的数据
  • 渗透第一步之DNS信息收集技巧。

    正向查询 首先 最简单最快速的是 使用ping命令输入域名来获取其ip地址 或者 使用nslookup命令来指定域名获取ip地址 Server 192 168 90 83 DNS服务器 Address 192 168 90 83 我们解析到
  • Redis实现用户签到

    目录 一 BitMap用法 1 介绍 2 用法 3 练习 二 签到功能 1 需求 2 代码实现 三 签到统计 1 分析 2 接口实现 一 BitMap用法 1 介绍 我们完全可以通过数据库签到表来实现签到功能 但是假如我们的用户达到千万 每
  • 关于VS2019出现“const char *“ 类型的实参与 “char *“ 类型的形参不兼容错误的解决方法

    解决办法 法1 在VS2019中依次点击项目 gt 属性 gt C C gt 语言 gt 符合模式 将原来的 是 改为 否 即可 法2 这种问题也有可能是因为局部变量没有进行初始化内存 也就是new和delete操作符的运用 include
  • 算法通关村-----链表中环的问题

    环形链表 问题描述 给你一个链表的头节点 head 判断链表中是否有环 如果链表中有某个节点 可以通过连续跟踪 next 指针再次到达 则链表中存在环 为了表示给定链表中的环 评测系统内部使用整数 pos 来表示链表尾连接到链表中的位置 索
  • 关于UTF-8、GBK编码以及编译时charset的指定的一些总结

    首先分清两个概念 C文件中 转换为16进制 汉字的编码 编译后bin文件中汉字的编码 gcc的 finput charset 和 fexec charset 两个选项的存在就是为了实现这两者的转换 1 默认情况下 gcc使用UTF 8 ch
  • OpenGL设计房间 (虚拟现实大作业)

    嘿嘿 课内虚拟现实课程的大作业 做了一个基于opengl房间 参考网上的一些资料 再进行一些扩充 还有一个unity3d的大作业将在之后上传 项目说明 本项目基于OpenGL实现 编辑器VS 使用gl glut h库 实现up键前进 dow
  • 【Spring】spring.main.allow-bean-definition-overriding,允许Bean覆盖

    1 概述 今天在运行我们主版本的主类 想启动任务 然后报错spring main allow bean definition overriding 然后我就查了一下这个是为什么 spring main allow bean definiti
  • 仿真引擎-文献总结笔记一

    文章题目 A Simulation Engine for Stochastic Timed Petri Nets and Application to Emergency Healthcare Systems 文章结构 第二节介绍了随机时间
  • python基础语法

    一个将某进制数转换为十进制数字的方法 该某进制数需要是字符类型表示 Python 3 gt gt gt n input 12 gt gt gt int n 16 18 eval函数用法 gt gt gt a 7 gt gt gt b a g
  • IDEA中使用监听器

    一 被监听对象 二 监听器 三 将时间源和监听器绑定 package listener uilistener import javax swing import java awt event WindowEvent import java
  • python将输入的内容保存到一个新文件

    def file write file name f open file name w print 请输入内容 单独输入 w 保存退出 while True write some input if write some w f write
  • javapdf模板生成pdf_【第9期】springboot: pdf操作

    一 pdf模板制作 1 word编辑模板 2 转成pdf模板 这个比较简单 wps另存为pdf格式就行 3 编辑pdf模板字段 pdf的编辑一般的软件就不行了 需要下载一个专业软件Adobe Acrobat DC 网上有破解版的 也可以关注
  • 做为互联网人 你必须知道的一些IT类网站

    一 IT类网站 行业资讯 1 36氪 36kr com 让一部分人先看到未来 互联网创业服务提供商 2 雷锋网 www leiphone com 读懂智能 未来 科技信息与产品服务平台 3 i黑马 www iheima com 创业创新服务
  • bash 实现多线程执行多个命令

    正常代码 bin bash for i 0 i lt 5 i do sleep 3 echo i done done wait 等待前面的代码执行完成 多线程代码 bin bash for i 0 i lt 5 i do sleep 3 e

随机推荐

  • React基础(超级详细,有案例)

    源码地址 https github com BLKNjyty reactstudy 定义 用于构建用户界面的JavaScript库 1 发送请求获取数据 2 处理数据 3 操作DOM呈现页面 React只关注这个 简答的说 就是将数据渲染为
  • Learning from Imbalanced Data 非均衡数据学习问题

    本文分什么是非均衡数据 非均衡数据对算法的影响 怎样处理非均衡学习以及非均衡学习评估这四个方面进行叙述 在这里 正例或者星号代表多数类 负例或者圆圈代表少数类 1 非均衡问题 非均衡问题有多重形式 1 intrinsic 数据固有属性 数据
  • Oracle Redo log

    Redo Logs概述 The redo log records all changes made to data including both uncommitted and committed changes Oracle通过Redo来
  • 【千律】C++基础:List 链表循环删除元素,及其报错的解决方案

    报错原因 采用erase移除迭代器后 迭代器的值变为 572662307 无法作为迭代器继续运算 详细 当程序执行到 list int erase itor 时 满足条件的第一个元素被删除 从而导致 itor 指针被删除 使其不指向任何元素
  • 全新出品!阿里 P5 工程师~P8 架构师晋升路线揭秘

    阿里巴巴终于公开了从初级程序员到架构师的学习路线图 这里相对应的基本上就是从 P5 到 P8 的晋升体系 今天老师将会带着大家从初级程序员开始一点点分享整个晋升体系 职级 初级程序员 薪资 6 12K 开发年限 0 1 年 技术能力 能够理
  • 小程序开发:监听返回当前页面

    故事背景 小程序开发 需要判断进入当前页面是初次加载还是返回的操作 就分享一下卤煮的实现思路吧 实现原理 先上图 我们都知道 在创建page页面的时候 开发工具会默认帮我们把生命周期的钩子一起生成 卤煮就用到了下面这两个钩子函数 原理 页面
  • 改变Element-ui 主题颜色

    主题颜色的改变本质是改变 样式的color 文字 背景 描边 局部改变可以使用 样式穿透 普通css root gt gt gt el upload list item transition none important webkit tr
  • 产业区块链一周动态丨深圳龙华区与腾讯共建产业区块链联盟,新四板试水区块链...

    作者 邱祥宇 10 24 会议之后 产业区块链似乎成为了一种政治正确 全国26省将区块链写入政府工作报告 12省发布专项政策19件 一顿操作猛如虎 整个行业拿到融资的公司却只有17家 政策热火朝天 资本望而却步 是什么原因导致中间出现断层
  • mysql分布式实践 - keepalived 实现IP漂移

    前言 mysql 分布式尤其是主 主 复制架构中 也是实现了读写分离的 如果有一个主master 挂掉了 那么如何让用户无感知的将请求打到另外一个master上 keepalived 插件的IP漂移就可以实现 1 keepalived 原理
  • 利用ipv6,在windows和ipad上远程访问共享文件夹

    利用ipv6 在windows和ipad上远程访问共享文件夹 背景 之前说到用ipv6 解决了远程桌面连接问题 利用ipv6远程桌面 彻底解决校园网掉线带来的问题 那么问题又来了 我在实验室电脑下载了python学习视频 这个视频特别大 几
  • 帧间差分法、背景减法、光流场法简介

    概述 运动目标检测是指当监控场景中有活动目标时 采用图像分割的方法从背景图像中提取出目标的运动区域 运动目标检测技术是智能视频分析的基础 因为目标跟踪 行为理解等视频分析算法都是针对目标区域的像素点进行的 目标检测的结果直接决定着智能视觉监
  • 4个最实用最强大ChatGPT插件

    GPT的插件有很多 功能也很强大 这些插件是自定义模块 可以集成到为特定行业量身定制的 AI 聊天机器人中 包括电子商务 医疗保健 金融和教育 使用 ChatGPT 插件 您现在可以做的不仅仅是聊天 今天给大家分享4个经常使用的插件 希望能
  • Qt Plugin插件机制与实例

    1 Qt 插件机制 1 1 Qt 插件简介 插件是一种遵循一定规范的应用程序接口编写出来的程序 定位于开发实现应用软件平台不具备的功能的程序 插件与宿主程序之间通过接口联系 就像硬件插卡一样 可以被随时删除 插入和修改 所以结构很灵活 容易
  • 深度:微软对Sun的步步紧逼催生了JavaFX

    在旧金山召开的JavaOne会议上 Sun首次公开了Java家族的新产品JavaFX 之后国内外各大媒体就开始竞相报道 也采访了国内的一些Java技术方面的专家 大家针对这一产品的褒贬不一 打开参与JavaFX产品研发的Sun的工程师Chr
  • 解决一个安装office2016缺少vcruntime140.dll的问题

    问题描述 在安装并激活好office2016之后 双击word 显示 缺少vcruntime140 dll 解决方案一 1 下载vcruntime140 dll 2 复制到C盘windows sysWOW64 3 然后寻找下载文件夹里zhu
  • 一文详解 Spring Bean 循环依赖

    一 背景 有好几次线上发布老应用时 遇到代码启动报错 具体错误如下 Caused by org springframework beans factory BeanCurrentlyInCreationException Error cre
  • chooseAddress:fail the api need to be declared in the requiredPrivateInfos field in app.json/ext.js

    错误描述 在使用uni app开发微信小程序的时候 想要通过uni chooseLocation获取用户地理位置的时候出现chooseAddress fail the api need to be declared in the requi
  • Linux环境安装配置ffmpeg

    最近需要在云主机上配置ffmpeg 租的服务器上面的环境往往是Linux 参考别人的文章配好了环境 在此进行综合记录 参考文章 https zhuanlan zhihu com p 347780238 https blog csdn net
  • Python 变量类型

    变量是存储在内存中的值 这就意味着在创建变量时会在内存中开辟一个空间 基于变量的数据类型 解释器会分配指定内存 并决定什么数据可以被存储在内存中 因此 变量可以指定不同的数据类型 这些变量可以存储整数 小数或字符 变量赋值 Python 中
  • python技能描述_【python】利用python爬虫 将LOL所有英雄的技能介绍给爬取下来

    工欲善其事 必先利其器 要想玩好LOL 那了解所有英雄的技能必然是其最基本的 所以此爬虫就应运而生 运行环境 python 3 7 此爬虫所用的库有 requests 获取网页信息 openpyxl Excel相关操作 pymysql My