我是靠谱客的博主 深情店员,这篇文章主要介绍利用matlab爬虫从OPGG上整理LOL英雄胜率,现在分享给大家,希望可以做个参考。

问题描述

在这里插入图片描述
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');

最后

以上就是深情店员最近收集整理的关于利用matlab爬虫从OPGG上整理LOL英雄胜率的全部内容,更多相关利用matlab爬虫从OPGG上整理LOL英雄胜率内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(54)

评论列表共有 0 条评论

立即
投稿
返回
顶部