利用matlab爬虫从OPGG上整理LOL英雄胜率

news/2024/11/17 1:57:30/

问题描述

在这里插入图片描述
OPGG上有各位置、各英雄的胜率和登场率的统计,这篇文章将展示如何利用matlab爬虫搜集这些信息。

结果展示

在这里插入图片描述

代码分析

还是上次的问题,无法利用urlread语句读取OPGG中文版的信息,所以只能将网页源代码保存到txt文件中。我们将txt文件命名为"33.txt"。这次还遇到了新问题,importdata语句在读取txt文件时,如果该txt文件的某一行只有数字和空格,那么读取就会不正常。为了避免这种情况的发生,我们必须先把txt文件中只有数字和空格的那些行删掉。

a=importdata(‘33.txt’);
b=convertCharsToStrings(a);
A=regexpi(b,‘champion-index-table__name">\S{1,}’,‘match’);
A(cellfun(@isempty,A))=[];
for i=1:size(A)
C(i)=A{i}(1);
end
C=strrep(C,‘champion-index-table__name">’,’’);
C=strrep(C,’’,’’);
找出所有的英雄名称。这个之前的文章里解释过就不再解释了。

B=regexpi(b,‘champion-index-table__cell–value">\S{1,}’,‘match’);
B(cellfun(@isempty,B))=[];
for i=1:size(B)
D(i)=B{i}(1);
end
D=strrep(D,‘champion-index-table__cell–value">’,’’);
D=strrep(D,’’,’’);
找出所有的胜率和出场率(两者的格式一样)。

j=0;
for i=1:2:size(D,2)
j=j+1;
E(j)=D(i);
end
j=0;
for i=2:2:size(D,2)
j=j+1;
F(j)=D(i);
end
将胜率和出场率二者分开,储存到两个矩阵中。

C=C’;
E=E’;
F=F’;
矩阵转置,方便后面写入。

G=[“上单”,“胜率”,“登场率”,“打野”,“胜率”,“登场率”,“中单”,“胜率”,“登场率”,“下路”,“胜率”,“登场率”,“辅助”,“胜率”,“登场率”];
xlswrite(‘output3.xlsx’,C(1:50,:),‘A2:A51’);
xlswrite(‘output3.xlsx’,E(1:50,:),‘B2:B51’);
xlswrite(‘output3.xlsx’,F(1:50,:),‘C2:C51’);
xlswrite(‘output3.xlsx’,C(51:93,:),‘D2:D44’);
xlswrite(‘output3.xlsx’,E(51:93,:),‘E2:E44’);
xlswrite(‘output3.xlsx’,F(51:93,:),‘F2:F44’);
xlswrite(‘output3.xlsx’,C(94:152,:),‘G2:G60’);
xlswrite(‘output3.xlsx’,E(94:152,:),‘H2:H60’);
xlswrite(‘output3.xlsx’,F(94:152,:),‘I2:I60’);
xlswrite(‘output3.xlsx’,C(153:170,:),‘J2:J19’);
xlswrite(‘output3.xlsx’,E(153:170,:),‘K2:K19’);
xlswrite(‘output3.xlsx’,F(153:170,:),‘L2:L19’);
xlswrite(‘output3.xlsx’,C(171:207,:),‘M2:M38’);
xlswrite(‘output3.xlsx’,E(171:207,:),‘N2:N38’);
xlswrite(‘output3.xlsx’,F(171:207,:),‘O2:O38’);
xlswrite(‘output3.xlsx’,G,‘A1:O1’);
写入excel。其中设置A2:A51的原因是上单英雄有50个,D2:D44的原因是打野英雄有43个,后面以此类推。

源代码

a=importdata('33.txt');
b=convertCharsToStrings(a);
A=regexpi(b,'champion-index-table__name">\S{1,}</div>','match');
A(cellfun(@isempty,A))=[];
for i=1:size(A)
C(i)=A{i}(1);
end
C=strrep(C,'champion-index-table__name">','');
C=strrep(C,'</div>','');
B=regexpi(b,'champion-index-table__cell--value">\S{1,}</td>','match');
B(cellfun(@isempty,B))=[];
for i=1:size(B)
D(i)=B{i}(1);
end
D=strrep(D,'champion-index-table__cell--value">','');
D=strrep(D,'</td>','');
j=0;
for i=1:2:size(D,2)
j=j+1;
E(j)=D(i);
end
j=0;
for i=2:2:size(D,2)
j=j+1;
F(j)=D(i);
end
C=C';
E=E';
F=F';
G=["上单","胜率","登场率","打野","胜率","登场率","中单","胜率","登场率","下路","胜率","登场率","辅助","胜率","登场率"];
xlswrite('output3.xlsx',C(1:50,:),'A2:A51');
xlswrite('output3.xlsx',E(1:50,:),'B2:B51');
xlswrite('output3.xlsx',F(1:50,:),'C2:C51');
xlswrite('output3.xlsx',C(51:93,:),'D2:D44');
xlswrite('output3.xlsx',E(51:93,:),'E2:E44');
xlswrite('output3.xlsx',F(51:93,:),'F2:F44');
xlswrite('output3.xlsx',C(94:152,:),'G2:G60');
xlswrite('output3.xlsx',E(94:152,:),'H2:H60');
xlswrite('output3.xlsx',F(94:152,:),'I2:I60');
xlswrite('output3.xlsx',C(153:170,:),'J2:J19');
xlswrite('output3.xlsx',E(153:170,:),'K2:K19');
xlswrite('output3.xlsx',F(153:170,:),'L2:L19');
xlswrite('output3.xlsx',C(171:207,:),'M2:M38');
xlswrite('output3.xlsx',E(171:207,:),'N2:N38');
xlswrite('output3.xlsx',F(171:207,:),'O2:O38');
xlswrite('output3.xlsx',G,'A1:O1');

http://www.ppmy.cn/news/675346.html

相关文章

C++ 预处理器

预处理器是一些指令&#xff0c;指示编译器在实际编译之前所需完成的预处理。 所有的预处理器指令都是以井号&#xff08;#&#xff09;开头&#xff0c;只有空格字符可以出现在预处理指令之前。预处理指令不是 C 语句&#xff0c;所以它们不会以分号&#xff08;;&#xff09…

阿里云顺利通过云原生中间件成熟度评估

前言&#xff1a; 2023 年 6 月 6 日&#xff0c;由中国信息通信研究院&#xff08;以下简称“中国信通院”&#xff09;承办的“ICT中国2023 高层论坛-云原生产业发展论坛”在北京召开&#xff0c;会上正式发布了一系列云原生领域评估结果。阿里云计算有限公司&#xff08;以…

电脑出现0xC1900101错误怎么办?

在更新或安装Windows操作系统时&#xff0c;有时系统会提示出现了0xC1900101错误。这个错误的出现通常是源于与驱动程序相关的错误所致。那么当电脑出现0xC1900101错误时该怎么办呢&#xff1f; 为什么会出现错误代码0xC1900101&#xff1f; 通常情况下&#xff0c;有以下几个…

iphone11屏比例_iPhone 11屏幕和iPhone X哪个大 iPhone 11和iPhone X屏幕大小对比

目前关于下一代新iPhone X的消息已经疯传网络&#xff0c;至于该机有多么惊艳众说纷纭。近日有iPhone11跑分图流出&#xff0c;下面一起来看看iPhone 11屏幕和iPhone X哪个大。 iPhone 11 整体介绍&#xff1a; 渲染图中的概念iPhone 11整体的设计风格与iPhone X相似&#xff0…

【手写源码-设计模式6】-适配器模式-基于IPhoneX手机充电场景

1&#xff1a;主题拆解 ①基本介绍 ②IPhone手机充电场景模拟 ③类适配器与对象适配器的区别 ④适配器模式的优缺点 ⑤适用场景 ⑥C#.NET中的使用场景 2&#xff1a;基本介绍 Adapter适配器模式&#xff0c;将一个类的接口转换成客户希望的另外一个接口。使原本由于接口…

iphone电压测试软件,新款iPhone SE充电兼容性大测试之45W篇

新款iPhone SE抵达充电头网评测室后&#xff0c;我们对它的充电兼容性做了全方位测试&#xff0c;尤其是充电器、移动电源两种最常见的供电方式&#xff0c;累计参与的充电器近百款&#xff0c;图片拍摄也超过了100多张&#xff0c;堪称目前最为全面的iPhone SE充电兼容测试。测…

如何为iPhone无线充电?

如何使用Qi 认证的充电配件为 iPhone 无线充电呢&#xff1f;小编给大家带来了iPhone无线充电的详细介绍&#xff0c;需要的朋友可以看一看&#xff01; 所需条件 iPhone 8 或更新机型集成了无线充电功能&#xff0c;能够提供方便直观的充电体验。 iPhone 12 iPhone 12 mini …

cmake Targets:CMake如何构建简单的Target

CMake有三个基本命令,用于定义CMake Target,分别是: add_executable() // 构建exeadd_library() // 构建库add_custom_target() // 自定义构建目标在camke构建阶段运行的 add_…