爬虫实战6:爬取英雄联盟官网五个位置的综合排行榜保存到excel
申明:资料来源于网络及书本,通过理解、实践、整理成学习笔记。
文章目录
- 英雄联盟官网
- 获取一个位置的综合排行榜所有数据(上单为例)
- 获取所有位置的综合排行榜所有数据
英雄联盟官网
获取一个位置的综合排行榜所有数据(上单为例)
以上单排行榜为例:
- 1、使用谷歌的无头浏览器访问该网页
url = 'http://lol.qq.com/guides/hero.shtml?ADTAG=cooperation.glzx.web' # 创建一个参数对象,用来控制chrome以无界面的方式打开 options = Options() # 后面的两个是固定写法 必须这么写 options.add_argument('--headless') options.add_argument('--disable-gpu') # 创建浏览器对象 driver = webdriver.Chrome(options=options) driver.get(url)
- 2、获取上单的所有数据进行数据处理
# 获取上单英雄的所有数据 driver.find_element(By.XPATH, '//a[@data-types="top"]').click() element = driver.find_element(By.ID, 'rankTable') data = element.text.split('\n') data.pop(0)
- 3、创建一个excel表格并写入第一行数据
# 新建一个工作簿 wb = Workbook() ws1 = wb.active # 更改sheet名称 ws1.title = '上单英雄' # excel表单第一行 first_line = ('排名', '排名波动', '英雄', '位置', '胜率', '登场率') for i in range(len(first_line)):ws1.cell(1, i + 1, first_line[i])
- 4、处理空值,网页信息中的英雄排名波动有部分英雄是没有值的,这会影响到我们后面批量处理获得的数据,所以我们可以按照索引添加数据0
创建一个列表,将有空值的索引添加进去,并在该位置插入数据0# 排名波动空值 employ = [28, 43] for i in range(46):if i in employ:data.insert(i * 5 + 1, '0')
- 5、将所有获得的数据分别保存至变量
# 将获取的数据进行处理并保存rank = data[i * 5]rank_float = data[i * 5 + 1]hero = data[i * 5 + 2]location = data[i * 5 + 3]win_rate = data[i * 5 + 4].split(' ')[0]appearance_rate = data[i * 5 + 4].split(' ')[1]
- 6、将所有数据保存到excel表,并保存到本地
# 将数据写入excel表格ws1.cell(i + 2, 1, rank)ws1.cell(i + 2, 2, rank_float)ws1.cell(i + 2, 3, hero)ws1.cell(i + 2, 4, location)ws1.cell(i + 2, 5, win_rate)ws1.cell(i + 2, 6, appearance_rate)# 保存excel表wb_name = '英雄联盟上单英雄总和排行榜数据.xlsx'wb.save(wb_name)
- 7、完整代码如下
from openpyxl import Workbook from selenium import webdriver from selenium.webdriver.chrome.options import Options from selenium.webdriver.common.by import Byurl = 'http://lol.qq.com/guides/hero.shtml?ADTAG=cooperation.glzx.web' # 创建一个参数对象,用来控制chrome以无界面的方式打开 options = Options() # 后面的两个是固定写法 必须这么写 options.add_argument('--headless') options.add_argument('--disable-gpu') # 创建浏览器对象 driver = webdriver.Chrome(options=options) driver.get(url) driver.implicitly_wait(10) # 新建一个工作簿 wb = Workbook() ws1 = wb.active ws1.title = '上单英雄' # excel表单第一行 first_line = ('排名', '排名波动', '英雄', '位置', '胜率', '登场率') for i in range(len(first_line)):ws1.cell(1, i + 1, first_line[i]) # 获取上单英雄的所有数据 driver.find_element(By.XPATH, '//a[@data-types="top"]').click() element = driver.find_element(By.ID, 'rankTable') data = element.text.split('\n') data.pop(0) # 排名波动空值 employ = [28, 43] for i in range(46):if i in employ:data.insert(i * 5 + 1, '0')# 将获取的数据进行处理并保存rank = data[i * 5]rank_float = data[i * 5 + 1]hero = data[i * 5 + 2]location = data[i * 5 + 3]win_rate = data[i * 5 + 4].split(' ')[0]appearance_rate = data[i * 5 + 4].split(' ')[1]# 将数据写入excel表格ws1.cell(i + 2, 1, rank)ws1.cell(i + 2, 2, rank_float)ws1.cell(i + 2, 3, hero)ws1.cell(i + 2, 4, location)ws1.cell(i + 2, 5, win_rate)ws1.cell(i + 2, 6, appearance_rate)# 保存excel表wb_name = '英雄联盟上单英雄总和排行榜数据.xlsx'wb.save(wb_name)print(rank, rank_float, hero, location, win_rate, appearance_rate)
- 8、运行结果
获取所有位置的综合排行榜所有数据
由于需要获取所有位置的数据,如果依次获取,会导致代码量很大,可以使用for循环加上if判断获取
完整代码如下:
from openpyxl import Workbook
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.chrome.options import Options
import timeclass LOL:def get_hero_info(self):# LOL官网urlurl = 'http://lol.qq.com/guides/hero.shtml?ADTAG=cooperation.glzx.web'# 创建一个参数对象,用来控制chrome以无界面的方式打开options = Options()# 后面的两个是固定写法 必须这么写options.add_argument('--headless')options.add_argument('--disable-gpu')# 创建浏览器对象driver = webdriver.Chrome(options=options)driver.get(url)driver.implicitly_wait(10)# 新建一个工作簿wb = Workbook()for j in range(5):# 获取上单英雄时所要变更的变量if j == 0:self.ws = wb.activeself.ws.title = '上单英雄'driver.find_element(By.XPATH, '//a[@data-types="top"]').click()self.element = driver.find_element(By.ID, 'rankTable')# 页面中上单英雄排行波动为空值的索引self.employ = [28, 43]# 上单英雄排行总个数self.num = 46# 获取打野英雄时所要变更的变量elif j == 1:# 创建第2个sheet表单并命名self.ws = wb.create_sheet('打野英雄', index=1)# 切换到打野英雄排行榜driver.find_element(By.XPATH, '//a[@data-types="jungle"]').click()self.element = driver.find_element(By.ID, 'rankTable')# 页面中打野英雄排行波动为空值的索引self.employ = [1, 5, 20, 29, 35]# 打野英雄排行总个数self.num = 40# 获取中单英雄时所要变更的变量elif j == 2:# 创建第3个sheet表单并命名self.ws = wb.create_sheet('中单英雄', index=2)# 切换到中单英雄排行榜driver.find_element(By.XPATH, '//a[@data-types="mid"]').click()self.element = driver.find_element(By.ID, 'rankTable')# 页面中中单英雄排行波动为空值的索引self.employ = [24, 59]# 中单英雄排行总个数self.num = 60# 获取下路英雄时所要变更的变量elif j == 3:# 创建第4个sheet表单并命名self.ws = wb.create_sheet('下路英雄', index=3)# 切换到下路英雄排行榜driver.find_element(By.XPATH, '//a[@data-types="bottom"]').click()self.element = driver.find_element(By.ID, 'rankTable')# 页面中下路英雄排行波动为空值的索引self.employ = [12]# 下路英雄排行总个数self.num = 21# 获取辅助英雄时所要变更的变量elif j == 4:# 创建第5个sheet表单并命名self.ws = wb.create_sheet('辅助英雄', index=4)# 切换到辅助英雄排行榜driver.find_element(By.XPATH, '//a[@data-types="support"]').click()self.element = driver.find_element(By.ID, 'rankTable')# 页面中辅助英雄排行波动为空值的索引self.employ = []# 辅助英雄排行总个数self.num = 37# 处理数据data = self.element.text.split('\n')data.pop(0)# excel表单第一行first_line = ('排名', '排名波动', '英雄', '位置', '胜率', '登场率')for i in range(len(first_line)):self.ws.cell(1, i + 1, first_line[i])time.sleep(1)# 排名波动空值for i in range(self.num):if i in self.employ:data.insert(i * 5 + 1, '0')# 将获取的数据进行处理并保存rank = data[i * 5]rank_float = data[i * 5 + 1]hero = data[i * 5 + 2]location = data[i * 5 + 3]win_rate = data[i * 5 + 4].split(' ')[0]appearance_rate = data[i * 5 + 4].split(' ')[1]# 将数据写入excel表格self.ws.cell(i + 2, 1, rank)self.ws.cell(i + 2, 2, rank_float)self.ws.cell(i + 2, 3, hero)self.ws.cell(i + 2, 4, location)self.ws.cell(i + 2, 5, win_rate)self.ws.cell(i + 2, 6, appearance_rate)# 保存excel表wb_name = '英雄联盟数据.xlsx'wb.save(wb_name)print(rank, rank_float, hero, location, win_rate, appearance_rate)if __name__ == '__main__':LOL().get_hero_info()
运行结果:
- 上单英雄综合排行榜数据
- 打野英雄综合排行榜数据
- 中单英雄综合排行榜数据
- 下路英雄综合排行榜数据
- 辅助英雄综合排行榜数据
Python爬虫实战专栏:
爬虫实战5:爬取全部穿越火线武器的图片以武器名称命名保存到本地文件
爬虫实战6:爬取英雄联盟官网五个位置的综合排行榜保存到excel
爬虫实战7:更新中—
一个坚持学习,坚持成长,坚持分享的人,即使再不聪明,也一定会成为优秀的人!
如果看完觉得有所收获的话,记得一键三连哦,谢谢大家!
爬虫实战6:爬取英雄联盟官网五个位置的综合排行榜保存到excel相关推荐
- Python爬虫之selenium爬取英雄联盟官网英雄皮肤图片下载到本地和保存到数据库
从英雄联盟皮肤网站的网页源代码中获取不到英雄的皮肤地址 通过selenium可以轻松获取想要的内容 源码展示 from selenium import webdriver from time impo ...
- Python爬虫之简单爬虫之爬取英雄联盟官网的英雄的皮肤
Python爬虫之简单爬虫之爬取英雄联盟官网的英雄的皮肤 文章目录 Python爬虫之简单爬虫之爬取英雄联盟官网的英雄的皮肤 背景:LOL这款游戏有着大量的玩家,这个游戏里面人们津津乐道的皮肤,每一款 ...
- Python爬虫实战| Python爬取英雄联盟高清壁纸
先看一下最终爬取的效果,每个英雄的壁纸都被爬取下来了: "黑暗之女 安妮"的12张壁纸: 高清大图: 下面开始正式教学! 版本:Python 3.5 工具:Jupyter note ...
- Python爬虫实战 | (1) 爬取猫眼电影官网的TOP100电影榜单
在本篇博客中,我们将使用requests+正则表达式来爬取猫眼电影官网的TOP100电影榜单,获取每部电影的片名,主演,上映日期,评分和封面等内容. 打开猫眼Top100,分析URL的变化:发现Top ...
- Python爬取英雄联盟官网图片
脚本下载图片预览-草丛三兄弟 #encoding = gbk import re,os,requests,json from selenium import webdriver import ppri ...
- 利用python爬取英雄联盟官网英雄皮肤
思路: 1.获取JS源代码 2.获取英雄ID 3.拼接完整路径 4.下载的位置 5.下载 import requests import re import json#获取JS源代码 def downl ...
- Python爬取英雄联盟官网壁纸源码分享
import json import re import requests import time def getLOLImages(): header = {'User-Agent':'Mozill ...
- python3爬虫之多线程爬取英雄联盟所有皮肤图片
python3爬虫之多线程爬取英雄联盟所有皮肤图片 线程不要太高,容易出错,大约用时1分钟左右. import requests import json import os import thread ...
- python爬取天眼查存入excel表格_爬虫案例1——爬取新乡一中官网2018届高考录取名单...
有一种非常常见并且相对简单的网络爬虫,工作流程大概是这样的: 访问目标网页 提取目标网页内表格信息 写入excel文件并保存 初次实践,我决定尝试写一个这样的爬虫.经过一番构思,我准备把爬取新乡一中官 ...
最新文章
- 使用ultraedit和cl编译器打造简易c/c++开发环境
- 【第11周复盘】小朋友们 100% 闯关成功!
- win7 能下node什么版本_Node.js 版本知多少?又该如何选择?
- python的时间序列预测,用python中的时间序列预测
- High1赛因天气不理想取消 球员平分一半奖金
- 设备树与驱动的关系_Linux CommonClock Framework分析之四 gpio clk gate驱动实现
- c语言用switch编写运输运费,求助。。关于用switch编写简易计算器
- WCF简单教程(6) 单向与双向通讯
- 春节必看的五个Asp.net源码!
- php由哪几部分组成,微型计算机通常是由哪几部分组成?
- 【报告分享】罗兰贝格2019年关于人工智能的十个议题.pdf(附下载链接)
- html 3重嵌套选项卡,这对HTML标签嵌套在SEO优化上,其实99%的人都不知道!
- vue 如何读取编译携带的参数
- html5 webStorage:localStorage sessionStorage
- 手机5g什么时候普及_5G牌照发放仨月,5G手机扎堆上市,何时才能真正普及?
- rsyslog收集华为路由器日志通过ELK处理展示
- 四川一度智信:拼多多活动报名规则解读
- 图片裁剪_如何裁剪某张图片的某一部分
- arduino温湿度计库文件_用ARDUINO开发板自制温湿度计(含WEMOS D1开发板环境安装)...
- c语言作业i love gplt,Jmete 入门一
热门文章
- android开发界面适配设计
- 一则笑话(滥用成语)
- 打造稳健的MT4 黄金交易策略,挑战1年翻3倍不爆仓的量化交易EA(附mql4程序)
- 算法工程师从此不加班!3.4K Star可视化神器来啦
- 国际快递包裹跟踪软件——“Deliveries”
- 创生之柱 Pillars of Creation
- Excel 公式格式化 /美化工具,数据统计效率++
- 洛谷 P3069 Hoof, Paper, Scissor G
- 2021年高考成绩家长陪孩子查询,2021高考100天家长寄语集锦
- PHP使用file_get_contents请求接口函数报错/出现乱码的解决办法