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

问题描述

利用matlab爬虫从OPGG上整理LOL英雄胜率_第1张图片
OPGG上有各位置、各英雄的胜率和登场率的统计,这篇文章将展示如何利用matlab爬虫搜集这些信息。

结果展示

利用matlab爬虫从OPGG上整理LOL英雄胜率_第2张图片

代码分析

还是上次的问题,无法利用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,}
','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');

你可能感兴趣的:(matlab)