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

本文介绍了如何利用MATLAB编写爬虫,从OPGG网站获取英雄联盟各位置英雄的胜率和登场率信息,并将其整理成Excel表格进行存储。通过处理网页源代码,提取所需数据并进行格式调整,最终成功地将数据写入到不同的工作表中。
摘要由CSDN通过智能技术生成

问题描述

在这里插入图片描述
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)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值