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

Java 網路基礎:使用 URL 類輕鬆抓取網頁原始碼

     編輯:Java 相關知識

Java 標準庫 java.net.URL 提供了極簡潔的高層 API,讓我們無需手動處理 Socket 連線與 HTTP 協議細節,即可輕鬆獲取網路資源。本例示範如何透過 URL.openStream() 取得輸入流,配合緩衝讀取器逐行輸出網頁原始碼。

核心程式碼解析

public getURL(String URL) {
    try {
        URL url = new URL(URL);
        BufferedReader in = new BufferedReader(new InputStreamReader(url.openStream()));
        String str;
        while ((str = in.readLine()) != null) {
            display(str); // 輸出每一行
        }
        in.close();
    } catch (MalformedURLException | IOException e) {
        // 異常處理
    }
}

關鍵步驟

  1. 建立 URL 物件:new URL("https://example.com") 自動解析協議、主機、埠號、路徑。
  2. 開啟輸入流:url.openStream() 內部自動完成 TCP 連線、發送 HTTP GET 請求、接收回應並剝離 Header,直接返回實體內容的 InputStream。
  3. 字元流包裝:InputStreamReader 處理位元組到字元轉換(預設 ISO-8859-1,實際應檢測 Content-Type charset),BufferedReader 提供高效 readLine()。
  4. 逐行讀取輸出:迴圈讀取直到 null(流結束)。

進階補充:實戰中需注意的細節

  • 編碼處理:網頁編碼千變萬化(UTF-8, GBK, Big5...),應從 Content-Type Header 或 HTML <meta> 標籤檢測,或使用 URLConnection.getContentEncoding(),再指定正確編碼構建 InputStreamReader。
  • 連線超時:預設無限等待,生產環境必須設定:URLConnection conn = url.openConnection(); conn.setConnectTimeout(5000); conn.setReadTimeout(10000);。
  • User-Agent 與重導向:部分網站屏蔽預設 UA,需偽裝;HttpURLConnection 預設自動跟隨重導向,可透過 setInstanceFollowRedirects(false) 控制。
  • 大檔案/二進位資源:下載圖片、檔案時勿用 Reader,直接操作 InputStream 寫入 FileOutputStream。

總結

URL 類是 Java 網路程式設計的「輕量級利器」,適合快速原型、簡單爬蟲、配置檔拉取等場景。若需精細控制請求 Header、Cookie、POST 表單、HTTPS 憑證等,請改用 HttpURLConnection 或成熟框架(OkHttp, Apache HttpClient)。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved