300字范文,内容丰富有趣,生活中的好帮手!
300字范文 > Java爬虫 爬取英雄联盟英雄的皮肤图片到本地

Java爬虫 爬取英雄联盟英雄的皮肤图片到本地

时间:2024-06-28 20:23:09

相关推荐

Java爬虫 爬取英雄联盟英雄的皮肤图片到本地

1.打开英雄联盟的官网,找到英雄介绍的页面

/data/info-heros.shtml所有英雄的页面

/data/info-defail.shtml?id=1 单个英雄的详细页面

2.使用postman调用单个英雄网址 分析页面 抓到英雄信息的具体网址js

如上图所示:文件地址:/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("/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秒。当然也不是必须的。

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

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。