admin管理员组

文章数量:1619276

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秒。当然也不是必须的。

结果:可以看到所有图片都下载到本地了,大概一千多张。

 

 

本文标签: 英雄爬虫皮肤联盟图片