申明:资料来源于网络及书本,通过理解、实践、整理成学习笔记。

文章目录

  • 英雄联盟官网
  • 获取一个位置的综合排行榜所有数据(上单为例)
  • 获取所有位置的综合排行榜所有数据

英雄联盟官网

获取一个位置的综合排行榜所有数据(上单为例)

以上单排行榜为例:

  • 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相关推荐

  1. Python爬虫之selenium爬取英雄联盟官网英雄皮肤图片下载到本地和保存到数据库

    从英雄联盟皮肤网站的网页源代码中获取不到英雄的皮肤地址 通过selenium可以轻松获取想要的内容 源码展示 from selenium import webdriver from time impo ...

  2. Python爬虫之简单爬虫之爬取英雄联盟官网的英雄的皮肤

    Python爬虫之简单爬虫之爬取英雄联盟官网的英雄的皮肤 文章目录 Python爬虫之简单爬虫之爬取英雄联盟官网的英雄的皮肤 背景:LOL这款游戏有着大量的玩家,这个游戏里面人们津津乐道的皮肤,每一款 ...

  3. Python爬虫实战| Python爬取英雄联盟高清壁纸

    先看一下最终爬取的效果,每个英雄的壁纸都被爬取下来了: "黑暗之女 安妮"的12张壁纸: 高清大图: 下面开始正式教学! 版本:Python 3.5 工具:Jupyter note ...

  4. Python爬虫实战 | (1) 爬取猫眼电影官网的TOP100电影榜单

    在本篇博客中,我们将使用requests+正则表达式来爬取猫眼电影官网的TOP100电影榜单,获取每部电影的片名,主演,上映日期,评分和封面等内容. 打开猫眼Top100,分析URL的变化:发现Top ...

  5. Python爬取英雄联盟官网图片

    脚本下载图片预览-草丛三兄弟 #encoding = gbk import re,os,requests,json from selenium import webdriver import ppri ...

  6. 利用python爬取英雄联盟官网英雄皮肤

    思路: 1.获取JS源代码 2.获取英雄ID 3.拼接完整路径 4.下载的位置 5.下载 import requests import re import json#获取JS源代码 def downl ...

  7. Python爬取英雄联盟官网壁纸源码分享

    import json import re import requests import time def getLOLImages(): header = {'User-Agent':'Mozill ...

  8. python3爬虫之多线程爬取英雄联盟所有皮肤图片

    python3爬虫之多线程爬取英雄联盟所有皮肤图片 线程不要太高,容易出错,大约用时1分钟左右. import requests import json import os import thread ...

  9. python爬取天眼查存入excel表格_爬虫案例1——爬取新乡一中官网2018届高考录取名单...

    有一种非常常见并且相对简单的网络爬虫,工作流程大概是这样的: 访问目标网页 提取目标网页内表格信息 写入excel文件并保存 初次实践,我决定尝试写一个这样的爬虫.经过一番构思,我准备把爬取新乡一中官 ...

最新文章

  1. 使用ultraedit和cl编译器打造简易c/c++开发环境
  2. 【第11周复盘】小朋友们 100% 闯关成功!
  3. win7 能下node什么版本_Node.js 版本知多少?又该如何选择?
  4. python的时间序列预测,用python中的时间序列预测
  5. High1赛因天气不理想取消 球员平分一半奖金
  6. 设备树与驱动的关系_Linux CommonClock Framework分析之四 gpio clk gate驱动实现
  7. c语言用switch编写运输运费,求助。。关于用switch编写简易计算器
  8. WCF简单教程(6) 单向与双向通讯
  9. 春节必看的五个Asp.net源码!
  10. php由哪几部分组成,微型计算机通常是由哪几部分组成?
  11. 【报告分享】罗兰贝格2019年关于人工智能的十个议题.pdf(附下载链接)
  12. html 3重嵌套选项卡,这对HTML标签嵌套在SEO优化上,其实99%的人都不知道!
  13. vue 如何读取编译携带的参数
  14. html5 webStorage:localStorage sessionStorage
  15. 手机5g什么时候普及_5G牌照发放仨月,5G手机扎堆上市,何时才能真正普及?
  16. rsyslog收集华为路由器日志通过ELK处理展示
  17. 四川一度智信:拼多多活动报名规则解读
  18. 图片裁剪_如何裁剪某张图片的某一部分
  19. arduino温湿度计库文件_用ARDUINO开发板自制温湿度计(含WEMOS D1开发板环境安装)...
  20. c语言作业i love gplt,Jmete 入门一

热门文章

  1. android开发界面适配设计
  2. 一则笑话(滥用成语)
  3. 打造稳健的MT4 黄金交易策略,挑战1年翻3倍不爆仓的量化交易EA(附mql4程序)
  4. 算法工程师从此不加班!3.4K Star可视化神器来啦
  5. 国际快递包裹跟踪软件——“Deliveries”
  6. 创生之柱 Pillars of Creation
  7. Excel 公式格式化 /美化工具,数据统计效率++
  8. 洛谷 P3069 Hoof, Paper, Scissor G
  9. 2021年高考成绩家长陪孩子查询,2021高考100天家长寄语集锦
  10. PHP使用file_get_contents请求接口函数报错/出现乱码的解决办法