Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Java

Đọc nội dung trang web không dùng thư viện ngoài (java.net.URL)

Dùng java.net.URL và openStream() – có sẵn trong JDK, không cần dependency.

Cơ chế

  1. Tạo URL object từ chuỗi địa chỉ
  2. Gọi openStream() → trả về InputStream
  3. Đọc stream bằng Scanner hoặc BufferedReader

Ví dụ hoàn chỉnh


import java.io.IOException;
import java.net.URL;
import java.util.Scanner;

public class ReadWebPageBasic {
    public static void main(String[] args) throws IOException {
        URL url = new URL("https://httpbin.org/html"); // trang test
        
        try (Scanner sc = new Scanner(url.openStream(), "UTF-8")) {
            StringBuilder sb = new StringBuilder();
            while (sc.hasNextLine()) {
                sb.append(sc.nextLine()).append("\n");
            }
            String html = sb.toString();
            System.out.println("HTML gốc (đầu): " + html.substring(0, Math.min(200, html.length())) + "...");
            
            // Loại bỏ tag HTML đơn giản
            String text = html.replaceAll("<[^>]*>", "").replaceAll("\\s+", " ").trim();
            System.out.println("Text thuần: " + text.substring(0, Math.min(200, text.length())) + "...");
        }
    }
}

Kết quả mẫu


HTML gốc (đầu): 

  
    httpbin.org
  
  
    

Herman Melville - Moby-Dick

... Text thuần: Herman Melville - Moby-Dick ...

⚠️ Hạn chế

  • Không hỗ trợ HTTPS redirect phức tạp, cookie, header tùy chỉnh
  • Không parse HTML đúng chuẩn (regex <[^>]*> lỗi với tag lồng, attribute chứa '>')
  • Không xử lý JavaScript rendering

Thư viện khuyên dùng cho production

  • Jsoup: Parse HTML, selector CSS, dễ dùng
  • HttpClient (Java 11+): HTTP/2, async, header, body handling
  • OkHttp: Hiệu năng cao, connection pooling