最近学习框架,无聊想看漫画,但是盗版网站一般都是单页单张图片,请求很慢,浪费时间,因此试着下载下来,一次性观看,
写的有点简单,只能单卷单卷的下载,而且只适用这个网站:http://www.hhimm.com/
下面举例下载这个漫画第二卷:http://www.hhimm.com/cool79588/1.html?s=5&d=0 ;记得在相应位置创建文件夹;
一般来说不同的漫画他的地址栏中 /coolxxxxxx/x.html?s=x&d=0 ,你只需要进去一部漫画,查看第一卷第一张的地址值,填入coolxxx和s=x,再修改循环下载页数即可
下面是代码,有点粗糙,见笑:
package com.yaimer.test; import java.io.*; import java.net.HttpURLConnection; import java.net.MalformedURLException; import java.net.URL; /** * @program: SpringBootMyBatisPuls * @description: 爬取地址 * @author: Guistar_yaimer * @create: 2020-07-22 16:02 **/ public class test { private static String s; public static String getHtml(String urlString) { try { StringBuffer html = new StringBuffer(); URL url = new URL(urlString); HttpURLConnection conn = (HttpURLConnection) url.openConnection(); InputStreamReader isr = new InputStreamReader(conn.getInputStream()); BufferedReader br = new BufferedReader(isr); String temp; int a=0; while ((temp = br.readLine()) != null) { a=a+1; //System.out.println(a); html.append(temp).append("\n"); if (a==42){ //System.out.println("============第四十二=============="+temp); s=""; s=temp; } } br.close(); isr.close(); return html.toString(); } catch (Exception e) { e.printStackTrace(); return null; } } public static void main(String[] args) { for (int i = 1; i < 192; i++) { String src="http://www.hhimm.com/cool79588/"+i+".html?s=5&d=0"; getHtml(src); //1.去空格 String ss =s.trim(); //2.找寻 /*System.out.println(ss.indexOf("name=")); System.out.println(ss.indexOf("onerror"));*/ String sss =ss.substring(ss.indexOf("name="),ss.indexOf("onerror")); //3.切割 String ssss = sss.substring(6,sss.length()-2); //System.out.println(i); //System.out.println(ssss); doww(i,getji(ssss)); } System.out.println("下载完毕--over"); } public static String getji(String s){ String x = s.substring(s.length()-1); String w="abcdefghijklmnopqrstuvwxyz"; int xi=w.indexOf(x)+1; String sk = s.substring(s.length()-xi-12,s.length()-xi-1); s=s.substring(0,s.length()-xi-12); String k=sk.substring(0,sk.length()-1); String f=sk.substring(sk.length()-1); for(int i=0;i<k.length();i++) { if(s.contains(k.substring(i,i+1))){ s=s.replace(k.substring(i,i+1),String.valueOf(i)); } } String[] ss = s.split(f); s=""; for(int i=0;i<ss.length;i++) { s+=(char) Integer.parseInt(ss[i]); //s+=String.fromCharCode(ss[i]); } return "http://20.94201314.net/dm05/"+s; } public static void doww(int num,String url){ String path = "D:/image/02/"; File dir = new File(path); path += num + ".jpg"; download(url, path); } public static void download(String strUrl, String path) { URL url = null; try { url = new URL(strUrl); } catch (MalformedURLException e2) { e2.printStackTrace(); return; } InputStream is = null; try { is = url.openStream(); } catch (IOException e1) { e1.printStackTrace(); return; } OutputStream os = null; try { os = new FileOutputStream(path); int bytesRead = 0; byte[] buffer = new byte[8192]; while ((bytesRead = is.read(buffer, 0, 8192)) != -1) {/*buffer数组存放读取的字节,如果因为流位于文件末尾而没有可用的字节,则返回值-1,以整数形式返回实际读取的字节数*/ os.write(buffer, 0, bytesRead); } } catch (FileNotFoundException e) { e.printStackTrace(); return; } catch (IOException e) { e.printStackTrace(); return; } } }
头发掉光了,java也没学会,每天只会阿巴阿巴