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

news/2024/11/17 1:59:47/

问题描述

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的原因是总共的英雄数量为145。

源代码

a=importdata('22.txt');
b=convertCharsToStrings(a);
A=regexpi(b,'data-champion-name="\S{1,}"','match');
A(cellfun(@isempty,A))=[];
for i=1:size(A)
C(i)=A{i}(1);
end
C=strrep(C,'data-champion-name="','');
C=strrep(C,'"','');
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,'"','');
E=regexpi(a,'title="\S{1,}|<span>\S{1,}</span>','match');
E(cellfun(@isempty,E))=[];
F=cell(size(E,1),1);
for i=1:size(E,1)
for j=1:size(E{i},2)
F{i}=[F{i},E{i}{j}];
end
end
F=strrep(F,'<span>','');
F=strrep(F,'</span>','');
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');

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

相关文章

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

问题描述 OPGG上有各位置、各英雄的胜率和登场率的统计&#xff0c;这篇文章将展示如何利用matlab爬虫搜集这些信息。 结果展示 代码分析 还是上次的问题&#xff0c;无法利用urlread语句读取OPGG中文版的信息&#xff0c;所以只能将网页源代码保存到txt文件中。我们将txt文件…

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 …