Java IO流 输入URL地址栏 下载漫画图片

最近学习框架,无聊想看漫画,但是盗版网站一般都是单页单张图片,请求很慢,浪费时间,因此试着下载下来,一次性观看,

写的有点简单,只能单卷单卷的下载,而且只适用这个网站: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也没学会,每天只会阿巴阿巴

猜你喜欢

转载自www.cnblogs.com/qq1967591590/p/13364562.html
今日推荐