首页 > 其他分享 >Matlab爬虫获取王者荣耀英雄皮肤

Matlab爬虫获取王者荣耀英雄皮肤

时间:2022-09-28 16:38:18浏览次数:80  
标签:herolist hero name 王者 number 爬虫 json Matlab skin

前言:周末闲来无事,玩了几局王者荣耀,突发奇想怎么获取到王者荣耀里面的英雄皮肤,本期分享一下如何通过matlab爬虫批量提取王者荣耀的英雄皮肤

关键字:王者荣耀、爬虫、Matlab


首先在度娘上找到王者荣耀的英雄主页Matlab爬虫获取王者荣耀英雄皮肤_html

​https://pvp.qq.com/web201605/herolist.shtml​

Matlab爬虫获取王者荣耀英雄皮肤_json_02

通过chrome浏览器的F12,找到获取英雄的调用方法。

 Matlab爬虫获取王者荣耀英雄皮肤_html_03


双击这个herolist.json,通过Notepad++打开可以看到里面对应的英雄详情

 

Matlab爬虫获取王者荣耀英雄皮肤_html_04

 

在matlab通过urlread函数获取到英雄列表情况,由于获取到的数据为char,需要转换为json格式,通过jsondecode函数实现转换 

url = 'https://pvp.qq.com/web201605/js/herolist.json';try    herolist = urlread(url);catch    disp('提取英雄列表失败,请再次重试')endjsonData=jsondecode(herolist);

对每个英雄提取对应的ename、cname和skin_name变量,

 

[row, col] = size(jsonData);hero_name = cell(row,1);hero_number = cell(row,1);hero_skin_number = cell(row,1);for i = 1:row    hero_name{i} = jsonData{i,1}.cname;    hero_number{i} = jsonData{i,1}.ename;    try        skin_name = strsplit(jsonData{i,1}.skin_name, '|');        hero_skin_number{i} = length(skin_name);    catch        hero_skin_number{i} = 1;    endend

下面开始要提取对应的图片,例如任意选择一个英雄,网址为:

​https://pvp.qq.com/web201605/herodetail/508.shtml​

Matlab爬虫获取王者荣耀英雄皮肤_html_05

右击选择图片-->检查,

Matlab爬虫获取王者荣耀英雄皮肤_html_06

可以看到对应的图片路径:

​https://game.gtimg.cn/images/yxzj/img201606/heroimg/508/508-smallskin-2.jpg​

Matlab爬虫获取王者荣耀英雄皮肤_创建文件夹_07

根据上面的网址,可以得到对应的图片路径格式为:

​https://game.gtimg.cn/images/yxzj/img201606/heroimg/{hero_number​

}/{hero_number}-smallskin-{hero_skin_number}.jpg

 通过webread函数提取到对应的图片,然后获取的图片通过imwrite保存成jpg文件。

 

onehero_link = strcat('http://game.gtimg.cn/images/yxzj/img201606/skin/hero-info/' ...            , num2str(hero_number{i}), '/', num2str(hero_number{i}), '-bigskin-', num2str(k),'.jpg');try    image = webread(onehero_link);catch     disp(['获取英雄',hero_name{i},'图片失败,请再次重试']) end imwrite(image,strcat(file_path_name_, num2str(k), '.jpg'));

通过urlread和webread在网络不好的情况下,可能会出现报错,所以通过try catch避免程序异常报错。对于每个英雄都单独保存在对应的名称文件夹下,通过mkdir创建文件夹。

  

完整的代码:

url = 'https://pvp.qq.com/web201605/js/herolist.json';try    herolist = urlread(url);catch    disp('提取英雄列表失败,请再次重试')end
jsnotallow=jsondecode(herolist);[row, col] = size(jsonData);hero_name = cell(row,1);hero_number = cell(row,1);hero_skin_number = cell(row,1);for i = 1:row hero_name{i} = jsonData{i,1}.cname; hero_number{i} = jsonData{i,1}.ename; try skin_name = strsplit(jsonData{i,1}.skin_name, '|'); hero_skin_number{i} = length(skin_name); catch hero_skin_number{i} = 1; endendsavepath = 'C:\Users\xxx\Documents\MATLAB';for i = 1:row file_name = hero_name{i}; file_path_name = strcat(savepath,'\',file_name); file_path_name_ = strcat(file_path_name,'\'); mkdir(file_path_name_); for k = 1:hero_skin_number{i} onehero_link = strcat('http://game.gtimg.cn/images/yxzj/img201606/skin/hero-info/' ... , num2str(hero_number{i}), '/', num2str(hero_number{i}), '-bigskin-', num2str(k),'.jpg'); try image = webread(onehero_link); catch disp(['获取英雄',hero_name{i},'图片失败,请再次重试']) end imwrite(image,strcat(file_path_name_, num2str(k), '.jpg')); endend

 

最后提取的结果如下

Matlab爬虫获取王者荣耀英雄皮肤_创建文件夹_08

Matlab爬虫获取王者荣耀英雄皮肤_html_09

最喜欢的英雄程咬金结束本文

Matlab爬虫获取王者荣耀英雄皮肤_创建文件夹_10

附上Python版本(推荐):

import osimport requests
url = 'https://pvp.qq.com/web201605/js/herolist.json'herolist = requests.get(url) # 获取英雄列表json文件
herolist_json = herolist.json() # 转化为json格式hero_name = list(map(lambda x: x['cname'], herolist.json())) # 提取英雄的名字hero_number = list(map(lambda x: x['ename'], herolist.json())) # 提取英雄的编号hero_skin_number = []for i in herolist.json(): try: hero_skin_number.append(len(i['skin_name'].split("|"))) except KeyError: hero_skin_number.append(1)

# 下载图片def downloadPic(): i = 0 for j in hero_number: # 创建文件夹 os.mkdir("./" + hero_name[i]) # 进入创建好的文件夹 os.chdir("./" + hero_name[i]) i += 1 for k in range(1, hero_skin_number[i - 1] + 1): # 拼接url onehero_link = 'http://game.gtimg.cn/images/yxzj/img201606/skin/hero-info/' + str(j) + '/' + str( j) + '-bigskin-' + str(k) + '.jpg' print(onehero_link) im = requests.get(onehero_link) # 请求url if im.status_code == 200: open(str(k) + '.jpg', 'wb').write(im.content) # 写入文件 os.chdir("../")
downloadPic()


标签:herolist,hero,name,王者,number,爬虫,json,Matlab,skin
From: https://blog.51cto.com/domi/5715886

相关文章

  • 在Linux上运行matlab
    1.首先在集群上把matlab这个模块加载上。moduleloadmatlabXXX2.接下来运行。matlab-nodesktop-nosplash-rmatlabfilename(不加.m,可执行文件)也可以进入matlab环......
  • python爬虫入门教程:爬取网页图片
    在现在这个信息爆炸的时代,要想高效的获取数据,爬虫是非常好用的。而用python做爬虫也十分简单方便,下面通过一个简单的小爬虫程序来看一看写爬虫的基本过程: 首先是要用到......
  • Matlab绘制特殊的图形
    1、指定坐标轴刻度值和标签自定义沿坐标轴的刻度值和标签有助于突出显示数据的特定方面。以下示例说明一些常见的自定义,例如修改刻度值的放置位置、更改刻度标签的文本和格......
  • 建立matlab的启动图标
    1、进入目录 cd  /usr/share/applications2、建立并编辑图标文件sudotouchmatlab.desktopsudovimmatlab.desktop,将以下内容输入并保存:#!/usr/bin/envxdg-op......
  • 分布式爬虫
    一、简介什么是分布式爬虫?分布式爬虫就是把一个爬虫任务放到多台机器上去运行,提高爬取效率但是每台机器运行同一套代码,都在各自的任务和去重队列,等于各爬各的,最终爬的数......
  • matlab基础知识汇总大全
    formatlong 、formatshort显示结果的更多位小数作用是控制输出显示的格式vpa()函数变精度vpa(pi,10)ans=3.141592654inline()函数可以将字符串转换成语句......
  • 爬虫理论知识
    常用的请求方法(1)Get(2)Post(3)Put(4)Delete(5)Trace(6)Head(7)Connect(8)Options列举反爬虫机制(1)UA检测;UserAgent:实现UA伪装;Cookie:模拟登陆;Accept:接......
  • 一小伙使用 python爬虫来算命?
    1.网站分析因版权原因,网站的地址大家可以私信我或者加我文章结尾的qq,完整的教程群里有,需要的自提,当然遇到问题也可以请教哦。2.获取内容我们今天呢,就先做一个通过星座来得......
  • 【Python】网络爬虫
    本章主要讲的是基于Python语言的数据采集,该功能要讲起来可以单独作为一门课程来学习,因为这是一门很重要的课程,一般运用在大数据处理和人工智能上,该应用提供大量的数据。1.......
  • 爬虫基础——静态网页与动态网页
    爬虫基础——静态网页与动态网页在爬虫前应首先名确待爬取的页面是静态的,还是动态的,只有确定了页面类型,才方便后续对网页进行分析和程序编写。对于不同的网页类型,编写爬......