爬取英雄联盟数据,搭建英雄本地库(主要是得到数据的方法,后续可自己优化编写代码,录入数据库)
问题1.
获取英雄信息列表。
首先进去英雄联盟官网,
/data/info-heros.shtml#Navi
爬取数据的时候,直接使用代码访问页面,分析html-doc,会发现英雄数据是动态加载的。
那就很可能是ajax请求的了,
现在很重要
F12 --- Network -------清除掉刚刚的所有文件,重新刷新筛选 点击XHR,这个是记录ajax请求的,很快就会发现一个hero_list.js文件,ok解决掉一个问题。/images/lol/act/img/js/heroList/hero_list.js
分析js
{heroId: "1", //英雄IDname: "黑暗之女",//中文名字,代码中Unicode编码alias: "Annie", //英文名title: "安妮", //昵称roles: ["mage"//职业分类,法师,还有tank等等,可以多个],isWeekFree: "0",//是否周免?attack: "2", //攻击(物理)defense: "3", //防御magic: "10", //魔法difficulty: "6",//上手难度selectAudio: "/images/lol/act/img/vo/choose/1.ogg",//选英雄的语音banAudio: "/images/lol/act/img/vo/ban/1.ogg" //被ban的时候的语音},
有了这些数据,就可以搭建一个简易的英雄数据库了。
但是还是少了一些什么,比如英雄头像小图标,英雄皮肤,背景故事等等。
不要着急,下面我们一一解决。
问题2
英雄头像
F12去查看英雄小图标
<img src="///images/lol/act/img/champion/Annie.png" alt="黑暗之女 安妮">可以发现 src中的Annie就是英雄的英文名,上面的js中,可以获取所有的英文名我们挑选其中一个,如赵信,将Annie替换成/images/lol/act/img/champion/XinZhao.png将URL复制到浏览器中,可以成功获取到头像了。
问题3
获取英雄皮肤
先进入英雄详情页,比如我们的港哥 派克
/data/info-defail.shtml?id=555英雄id 555,去对照hero list中的id,一致。随便换一个 @问题1 中有的id,复制到浏览器访问,比如 巴德 432/data/info-defail.shtml?id=432成功进入巴德的详情页
然后我们按照 @问题2的方法去找皮肤,惊奇的发现
432.js,这不就是巴德的ID吗/images/lol/act/img/js/hero/432.js里面有你所有想要的信息,包括问题4的背景故事,皮肤URL还包括技能qwer的详细信息和对线技巧因为太多,这里就不详细介绍每个字段的意思的,对照原网页,应该可以看的明白。
发现没有,其实所有的问题都在XHR
中,
一直以为 是要获取js代码,然后再分析,找到请求方法,分析出地址和参数。
如果觉得《英雄联盟-英雄信息获取(皮肤-英雄名 背景故事 技能)》对你有帮助,请点赞、收藏,并留下你的观点哦!