利用matlab爬虫从OPGG上整理LOL英雄信息

问题描述

OPGG是最权威的LOL数据网站,从这个网站上我们可以得到很多有关LOL的非常有用的数据,而matlab爬虫就是一个能够从网站上搜集信息的工具。这篇文章将要讲述如何利用matlab爬虫从OPGG上整理LOL英雄信息。

结果展示

在这里插入图片描述
英雄的信息分为三列,分别为中文名、英文名、位置。

代码分析

一开始,麻烦的事情就出现了,OPGG官网:http://www.op.gg/champion/statistics是一个综合多种语言的网站,但是每种语言的链接都是一样的。当我们使用urlread语句读取这个网站的信息的时候,却默认打开的是英文版的网站。但是我们所需要收集是信息却是中文版的。为了解决这个问题,我们只能将该网页源代码中我们所需要的那一部分保存到一个txt文件中。将其命名为"22.txt"。

a=importdata(‘22.txt’);
读取txt文件"22.txt"。

b=convertCharsToStrings(a);
转化为字符串数组。

A=regexpi(b,‘data-champion-name="\S{1,}"’,‘match’);
观察网页源代码,中文名周围的格式为’data-champion-name=" ",利用正则化匹配将其找出。

A(cellfun(@isempty,A))=[];
去掉没有匹配项的空cell数组。

for i=1:size(A)
C(i)=A{i}(1);
end
将字符串提取到一个新矩阵C中。

C=strrep(C,‘data-champion-name="’,’’);
C=strrep(C,’"’,’’);
将’data-champion-name="和’"删掉,此时字符串中只剩下中文名。

B=regexpi(b,‘data-champion-key="\S{1,}"’,‘match’);
B(cellfun(@isempty,B))=[];
for i=1:size(B)
D(i)=B{i}(1);
end
D=strrep(D,‘data-champion-key="’,’’);
D=strrep(D,’"’,’’);
同理,利用正则化匹配找出英文名。

位置这一部分有些复杂,因为一个英雄可能适合很多个位置,当我们搜索位置的时候,可能会获得多个结果,而这每一个结果都被保存在不同的cell数组中,我们要想办法将它们连起来。
已知语句:[‘a’,‘b’,‘c’]可以将字符串连起来,变成’abc’。所以我们想要将’上单’,‘中单’,'打野’连起来,就要想办法将它们变成[‘a’,‘b’,‘c’]的形式。

E=regexpi(a,‘title="\S{1,}|\S{1,}’,‘match’);
E(cellfun(@isempty,E))=[];
先不将a化为字符串数组,先进行正则化匹配,然后去空。正则化匹配的时候,我们意识到“巨魔之王”的匹配格式和其他英雄都不同,为title=" 。所以要用一个|,将“巨魔之王”的匹配格式放在前面。

F=cell(size(E,1),1);
定义F为一个空的字符数组。

for i=1:size(E,1)
for j=1:size(E{i},2)
F{i}=[F{i},E{i}{j}];
end
end
利用这个方法可以将E{i}中的每个元素合并到F{i}中。

F=strrep(F,’’,’’);
F=strrep(F,’’,’’);
F=strrep(F,‘title="’,’’);
F=strrep(F,’"’,’’);
F=convertCharsToStrings(F);
删去多余字符,转化为字符串数组。

G=[“中文名”,“英文名”,“位置”];
xlswrite(‘output2.xlsx’,G,‘A1:C1’);
xlswrite(‘output2.xlsx’,C’,‘A2:A146’);
xlswrite(‘output2.xlsx’,D’,‘B2:B146’);
xlswrite(‘output2.xlsx’,F,‘C2:C146’);
写入excel。设置A2:A146的原因是总共的英雄数量为1

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值