Java爬虫: Java爬虫可能用得到的一些工具

用到的一些Maven依赖:


    
    
        org.jsoup
        jsoup
        1.10.2
    

    
    
        org.mybatis
        mybatis
        3.4.1
    

    
    
        mysql
        mysql-connector-java
        5.1.38
    

    
    
        com.alibaba
        fastjson
        1.2.7
    

Java爬虫可能用得到的一些工具

package pri.liyang.util;

import org.jsoup.Jsoup;

import java.io.*;
import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLConnection;

/**
 * Java爬虫可能用得到的一些工具
 * Author:李小白
 */
public class JavaSpiderUtil {

    /**
     * 根据给定的URL,获取相应的HTML内容,用于正则爬取数据
     * */
    public static String getHtmlByUrl(String requestUrl) throws Exception{
        URL url = new URL(requestUrl);
        //通过Jsoup获取html内容,设置超时时间30秒
        String html = Jsoup.parse(url, 30*1000).toString();
        return html;
    }

    /**
     * 根据URL,发送GET请求,获取JSON数据(ResponseBody)
     * 适用于前后端分离的情况,返回的是ResponseBody的JSon数据
     * */
    public static String getResponseBodyByUrlAndMethodGet(String requestUrl) throws Exception{
        String response="";
        StringBuffer buffer = new StringBuffer();
        try{
            //实例化URL对象,通过String requestURL
            URL url = new URL(requestUrl);
            //调用URL的openConnection(),获得HttpURLConnection实例
            HttpURLConnection urlCon= (HttpURLConnection)url.openConnection();
            //状态码是200,则连接成功
            if(200==urlCon.getResponseCode()){
                //获得该HttpURLConnection的输入流
                InputStream is = urlCon.getInputStream();
                InputStreamReader isr = new InputStreamReader(is,"utf-8");
                BufferedReader br = new BufferedReader(isr);

                String str = null;
                while((str = br.readLine())!=null){
                    //读取该url的ResponseBody(通过输入流转换的BufferedReader)
                    buffer.append(str);
                }
                //根据打开顺序,倒序关流
                br.close();
                isr.close();
                is.close();
                //获得ResponseBody的Json数据
                response = buffer.toString();
            }
        }catch(IOException e){
            e.printStackTrace();
        }
        return response;
    }

    /**
     * 判断给定URL是否有效
     * */
    public static Boolean isValidURL(String requestURL){
        String html = null;
        try{
            html = URLTool.getHtmlByUrl(requestURL);
            System.out.println("网址有效:" + requestURL);
            return true;
        }catch(Exception e){
            System.out.println("网址无法使用,请检查其有效性:" + requestURL);
            return false;
        }
    }

    /**
     * 根据URL下载图片
     * */
    public static void download(String urlString, String filename,String savePath) throws Exception {
        // 构造URL
        URL url = new URL(urlString);
        // 打开连接
        URLConnection con = url.openConnection();
        //设置请求超时为5s
        con.setConnectTimeout(5*1000);
        // 输入流
        InputStream is = con.getInputStream();

        // 1K的数据缓冲
        byte[] bs = new byte[1024];
        // 读取到的数据长度
        int len;
        // 输出的文件流
        File sf=new File(savePath);
        if(!sf.exists()){
            sf.mkdirs();
        }
        OutputStream os = new FileOutputStream(sf.getPath()+"\\"+filename);
        // 开始读取
        while ((len = is.read(bs)) != -1) {
            os.write(bs, 0, len);
        }
        // 完毕,关闭所有链接
        os.close();
        is.close();

        System.out.println(filename + "   下载成功!");
    }

}

你可能感兴趣的:(Java工具包)