首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 綜合教學

Java 網絡編程核心類庫與爬蟲實戰基礎

     編輯:Java 綜合教學

核心類體系總結

類/接口包核心作用關鍵方法
URLjava.net統一資源定位符openConnection()、getProtocol()、getHost()
URLConnectionjava.net網絡連接抽象connect()、getInputStream()、setRequestProperty()
HttpURLConnectionjava.netHTTP 專用連接setRequestMethod()、getResponseCode()、getOutputStream()
BufferedReaderjava.io緩沖字符讀取readLine()、read(char[])
InputStreamReaderjava.io字節流轉字符流構造器指定編碼:new InputStreamReader(is, "UTF-8")
Patternjava.util.regex正則編譯模式compile(regex)、matcher(input)
Matcherjava.util.regex正則匹配器find()、group()、group(int)、start()、end()

典型爬蟲代碼模板

public class SimpleCrawler {
    public static void main(String[] args) throws Exception {
        // 1. 建立連接
        URL url = new URL("https://example.com");
        HttpURLConnection conn = (HttpURLConnection) url.openConnection();
        conn.setRequestMethod("GET");
        conn.setRequestProperty("User-Agent", "Mozilla/5.0");
        conn.setConnectTimeout(5000);
        conn.setReadTimeout(10000);
        
        // 2. 讀取響應
        try (BufferedReader reader = new BufferedReader(
                new InputStreamReader(conn.getInputStream(), "UTF-8"))) {
            StringBuilder html = new StringBuilder();
            String line;
            while ((line = reader.readLine()) != null) {
                html.append(line).append("\n");
            }
            
            // 3. 正則提取
            String regex = "<title>(.*?)</title>";
            Pattern pattern = Pattern.compile(regex, Pattern.DOTALL);
            Matcher matcher = pattern.matcher(html.toString());
            if (matcher.find()) {
                System.out.println("頁面標題: " + matcher.group(1));
            }
        }
    }
}

進階提示

  • 編碼處理:優先從 Content-Type Header 獲取 charset,失敗則嘗試 UTF-8/GBK 自動檢測
  • 異常處理:區分連接超時、讀取超時、HTTP 錯誤碼(4xx/5xx)、SSL 證書異常
  • 合規性:遵守 robots.txt、設置合理爬取間隔、識別 User-Agent
  • 生產級框架:推薦使用 HttpClient、OkHttp、Jsoup、WebMagic 等成熟庫替代原生 API
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved