jsoup: Bộ phân tích HTML cho Java
Thu thập, làm sạch và thao tác HTML với sự đơn giản như jQuery trong Java
jsoup là gì?
jsoup là một thư viện Java nhẹ nhưng mạnh mẽ được thiết kế để làm việc với HTML thực tế. Nó cung cấp API mượt mà để phân tích HTML từ URL, tệp hoặc chuỗi, trích xuất và thao tác dữ liệu bằng cách duyệt DOM, bộ chọn CSS và các phương thức HTML5 hiện đại. Lý tưởng cho thu thập web, trích xuất dữ liệu và làm sạch HTML, jsoup xử lý đánh dấu không đúng chuẩn một cách duyên dáng - giống như trình duyệt.
Không giống như các phương pháp regex thô, jsoup cung cấp mô hình đối tượng sạch sẽ với các phương thức lấy cảm hứng từ jQuery, đơn giản hóa các tác vụ như gửi biểu mẫu, sửa đổi thuộc tính và trích xuất văn bản. Không phụ thuộc và với giấy phép MIT, nó là lựa chọn yêu thích của các nhà phát triển Java cần xử lý HTML đáng tin cậy.
Lợi ích chính của jsoup:
- Xử lý HTML thực tế: Phân tích HTML lộn xộn như trình duyệt
- Cú pháp kiểu jQuery: Bộ chọn CSS quen thuộc (vd.
doc.select("div.content")
) - Thân thiện với thu thập: Theo dõi chuyển hướng, xử lý cookie và gửi biểu mẫu
- Đa nền tảng: Java thuần không phụ thuộc native
- Bảo mật: Phòng chống XSS và làm sạch HTML tích hợp
Hoàn hảo cho khai thác dữ liệu, tự động hóa web và phân tích nội dung.
Tại sao chọn jsoup?
- Đơn giản: API trực quan với hỗ trợ bộ chọn CSS
- Đáng tin cậy: Được duy trì tích cực từ 2009
- Hiệu suất: Tối ưu cho luồng và tài liệu lớn
- Linh hoạt: Làm việc với đoạn mã, tệp hoặc URL trực tiếp
- Đầu ra sạch: In và định dạng lại HTML đẹp mắt
Cài đặt
Thêm jsoup qua Maven hoặc Gradle:
Maven
org.jsoup
jsoup
1.17.2
Gradle
implementation 'org.jsoup:jsoup:1.17.2'
Yêu cầu hệ thống: Java 8+
Ví dụ mã
Các trường hợp sử dụng thực tế của jsoup:
Ví dụ 1: Phân tích tài liệu từ chuỗi
Nếu bạn có HTML trong chuỗi Java và muốn phân tích nó để lấy nội dung hoặc sửa đổi, jsoup có thể làm điều này chỉ với vài dòng mã.
Phương thức parse(String html, String baseUri)
chuyển đổi HTML đầu vào thành Tài liệu mới. Tham số baseUri
giúp giải quyết URL tương đối thành tuyệt đối và nên tương ứng với URL mà tài liệu được lấy từ đó. Nếu điều này không liên quan hoặc nếu HTML chứa phần tử <base>
, bạn có thể sử dụng phương thức đơn giản hơn parse(String html)
.
Ví dụ 2: Sử dụng bộ chọn CSS để tìm phần tử
Bạn muốn tìm hoặc thao tác phần tử bằng bộ chọn CSS. Phân tích và thao tác chuỗi HTML trực tiếp:
Ví dụ 3: Sửa đổi HTML của phần tử
Bạn cần sửa đổi HTML của phần tử. Sử dụng các phương thức setter HTML trong Phần tử như được hiển thị trong mã ví dụ sau.
Tính năng nâng cao
jsoup hỗ trợ xử lý HTML chuyên nghiệp:
- Xử lý biểu mẫu: Gửi dữ liệu POST:
Gửi biểu mẫu
Connection.Response res = Jsoup.connect("https://example.com/login") .data("username", "user", "password", "pass") .method(Connection.Method.POST) .execute(); Document dashboard = res.parse();
- Hỗ trợ proxy: Thu thập qua proxy:
Cấu hình proxy
Document doc = Jsoup.connect("https://target.com") .proxy("127.0.0.1", 8080) .get();
- Thao tác DOM: Thay đổi cấu trúc HTML:
Thay đổi DOM
doc.select("div.ads").remove(); // Xóa tất cả quảng cáo doc.select("h1").attr("class", "header"); // Thêm lớp CSS
jsoup vs HTMLUnit
Khác biệt chính:
- Trọng tâm: jsoup phân tích HTML tĩnh; HTMLUnit mô phỏng trình duyệt (thực thi JavaScript)
- Tốc độ: jsoup nhanh hơn để phân tích HTML thuần túy
- Phong cách API: jsoup sử dụng bộ chọn CSS; HTMLUnit bắt chước Selenium
- Trường hợp sử dụng: jsoup để thu thập; HTMLUnit để kiểm tra trang động
- Phụ thuộc: jsoup không có; HTMLUnit yêu cầu thư viện bổ sung
Kết luận
jsoup là bộ công cụ HTML tối ưu cho nhà phát triển Java. Lý tưởng cho:
- Thu thập web: Trích xuất dữ liệu từ bất kỳ trang web nào
- Làm sạch dữ liệu: Làm sạch và chuẩn hóa HTML
- Phân tích nội dung: Phân tích nguồn cấp RSS hoặc kho lưu trữ web
- Kiểm thử: Xác minh cấu trúc HTML trong ứng dụng
Với giấy phép MIT và API trực quan, jsoup là lựa chọn hàng đầu để xử lý HTML dựa trên Java.
Sản Phẩm Tương Tự
- Apache POI XWPF | API Java nguồn mở để tạo và sửa đổi các tệp DOCX
- DocX | API .NET nguồn mở để tạo và sửa đổi các tệp DOCX
- Docx4J | API Java nguồn mở để tạo và sửa đổi các tệp DOC và DOCX
- ExcelDataReader | API .NET nguồn mở để đọc các tài liệu XLS, XLSX, CSV và Bảng tính
- FileFormat.Cells | Tạo và cập nhật các tệp Excel bằng C# .NET