admin管理员组文章数量:1619277
1.打开英雄联盟的官网,找到英雄介绍的页面
https://lol.qq/data/info-heros.shtml 所有英雄的页面
https://lol.qq/data/info-defail.shtml?id=1 单个英雄的详细页面
2.使用postman调用单个英雄网址 分析页面 抓到英雄信息的具体网址js
如上图所示:文件地址:https://game.gtimg/images/lol/act/img/js/hero/1.js
注意:1.js 数字不固定,有多少个英雄就有多少个js js顺序不连续 如图所示:
3.打开eclipse,引入maven依赖,这个是开源的工具类。
<dependency>
<groupId>cn.hutool</groupId>
<artifactId>hutool-all</artifactId>
<version>5.1.5</version>
</dependency>
4.编写代码 为什么循环取875,是上边分析页面得出的最大值,中间有很多没有的js,访问不到的。
public static void downloadTest() throws Exception {
String result1;
for (int i = 1; i <= 875; i++) {
result1= HttpUtil.get("https://game.gtimg/images/lol/act/img/js/hero/"+i+".js");
// Console.log(result1);
if(result1.length()>85) {
JSONObject jsonObject = JSONUtil.parseObj(result1);
JSONArray skinsArray = jsonObject.getJSONArray("skins");
List<String> heroNameList = new ArrayList<>();
List<String> heroUrlList = new ArrayList<>();
String heroTitle,heroName,name,mainImg;
for (Object obj : skinsArray) {
// obj.toString();
// Console.log(obj.toString());
JSONObject skinObject = JSONUtil.parseObj(obj.toString());
heroTitle = skinObject.get("heroTitle").toString();
heroName = skinObject.get("heroName").toString();
name = skinObject.get("name").toString();
mainImg = skinObject.get("mainImg").toString();
// Console.log("英雄名字:{}-{}-{},皮肤URL:{}",heroName,heroTitle,name,mainImg);
heroNameList.add(heroName+"-"+heroTitle+"-"+name);
heroUrlList.add(mainImg);
}
for (int j = 0; j < heroUrlList.size(); j++) {
if(!"".equals(heroUrlList.get(j))&&heroUrlList.get(j)!=null) {
HttpUtil.downloadFile(heroUrlList.get(j), FileUtil.file("d:/英雄联盟皮肤/"+heroNameList.get(j)+".jpg"));
}
}
Console.log("下载完成 {}",i);
}
Thread.sleep(1000);
}
}
为了访问慢一点,这里让主线程睡眠1秒。当然也不是必须的。
结果:可以看到所有图片都下载到本地了,大概一千多张。
版权声明:本文标题:Java爬虫 爬取英雄联盟英雄的皮肤图片到本地 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://m.elefans.com/xitong/1728794275a1174022.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论