Hướng dẫn JSoup hướng dẫn giới thiệu về trình phân tích cú pháp HTML JSoup. Trong hướng dẫn này, chúng ta sẽ phân tích cú pháp dữ liệu HTML từ chuỗi HTML, tệp HTML cục bộ và trang web. Chúng tôi sẽ vệ sinh dữ liệu và thực hiện tìm kiếm trên Google Show JSoup là một thư viện Java để trích xuất và thao tác dữ liệu HTML. Nó triển khai đặc tả HTML5 và phân tích cú pháp HTML thành cùng một DOM như các trình duyệt hiện đại Các tính năng của JSoupVới JSoup, chúng tôi có thể
Trong các ví dụ của hướng dẫn này, chúng tôi sử dụng phụ thuộc Gradle sau implementation 'org.jsoup:jsoup:1.15.2' lớp JSoupLớp Document doc = Jsoup.parse(htmlString);4 cung cấp điểm truy cập công khai cốt lõi cho chức năng jsoup thông qua các phương thức tĩnh của nó. Chẳng hạn, phương thức Document doc = Jsoup.parse(htmlString);5 làm sạch mã HTML, phương thức Document doc = Jsoup.parse(htmlString);6 tạo kết nối tới URL hoặc phương thức Document doc = Jsoup.parse(htmlString);7 phân tích nội dung HTML Trong một số ví dụ, chúng tôi sử dụng tệp HTML sau Document title
JSoup phân tích cú pháp chuỗi HTMLPhương thức Document doc = Jsoup.parse(htmlString);8 chuyển một chuỗi HTML vào một tài liệu com/zetcode/JSoupFromStringEx. java package com.zetcode; import org.jsoup.Jsoup; import org.jsoup.nodes.Document; public class JSoupFromStringEx { public static void main(String[] args) { String htmlString = """ My title Body content"""; Document doc = Jsoup.parse(htmlString); String title = doc.title(); String body = doc.body().text(); System.out.printf("Title: %s%n", title); System.out.printf("Body: %s", body); } } Ví dụ phân tích một chuỗi HTML và xuất tiêu đề và nội dung cơ thể của nó ________số 8_______Chuỗi này chứa dữ liệu HTML đơn giản Document doc = Jsoup.parse(htmlString); Với phương thức Document doc = Jsoup.parse(htmlString);7 của Jsoup, chúng tôi phân tích cú pháp chuỗi HTML. Phương thức trả về một tài liệu HTML String title = doc.title(); Phương thức String title = doc.title();0 của tài liệu lấy nội dung chuỗi của phần tử tiêu đề của tài liệu String body = doc.body().text(); Phương thức String title = doc.title();1 của tài liệu trả về phần tử body; Trong ví dụ thứ hai, chúng tôi sẽ phân tích một tệp HTML cục bộ. Chúng tôi sử dụng phương thức String title = doc.title();3 quá tải lấy đối tượng String title = doc.title();4 làm tham số đầu tiên của nó src/chính/tài nguyên/chỉ mục. html My title Ví dụ, chúng tôi sử dụng tệp HTML ở trên com/zetcode/JSoupFromFileEx. java package com.zetcode; import java.io.File; import java.io.IOException; import org.jsoup.Jsoup; import org.jsoup.nodes.Document; import org.jsoup.nodes.Element; public class JSoupFromFileEx { public static void main(String[] args) throws IOException { String fileName = "src/main/resources/index.html"; Document doc = Jsoup.parse(new File(fileName), "utf-8"); Element divTag = doc.getElementById("mydiv"); System.out.println(divTag.text()); } } Ví dụ phân tích cú pháp tệp String title = doc.title();5, nằm trong thư mục String title = doc.title();6 Document doc = Jsoup.parse(new File(fileName), "utf-8"); Chúng tôi phân tích cú pháp tệp HTML bằng phương thức String title = doc.title();3 Document title
Với phương pháp String title = doc.title();8 của tài liệu, chúng tôi lấy phần tử theo ID của nó Document title
Văn bản của thẻ được truy xuất bằng phương thức String title = doc.title();2 của phần tử JSoup đọc tiêu đề của trang webTrong ví dụ sau, chúng tôi cạo và phân tích cú pháp một trang web và truy xuất nội dung của phần tử tiêu đề com/zetcode/JSoupTitleEx. java Document title
Trong ví dụ mã, chúng tôi đọc tiêu đề của một trang web được chỉ định Document title
Phương thức Document doc = Jsoup.parse(htmlString);6 của Jsoup tạo kết nối đến URL đã cho. Phương thức String body = doc.body().text();1 thực thi một yêu cầu GET và phân tích kết quả; String title = doc.title(); Với phương thức String title = doc.title();0 của tài liệu, chúng ta có được tiêu đề của tài liệu HTML Ví dụ tiếp theo truy xuất mã nguồn HTML của trang web com/zetcode/JSoupHtmlPageEx. java Document title
Ví dụ in HTML của một trang web Document title
Phương thức String body = doc.body().text();3 trả về HTML của một phần tử; Thông tin meta của tài liệu HTML cung cấp siêu dữ liệu có cấu trúc về một trang Web, chẳng hạn như mô tả và từ khóa của nó com/zetcode/JSoupMetaInfoEx. java Document title
Ví dụ mã truy xuất thông tin meta về một trang web được chỉ định Document title
Phương pháp String body = doc.body().text();4 của tài liệu tìm các phần tử khớp với truy vấn đã cho. Phương thức String body = doc.body().text();5 trả về phần tử khớp đầu tiên. Với phương thức String body = doc.body().text();6 ta lấy giá trị của thuộc tính String body = doc.body().text();7 Để lấy tất cả các thẻ, chúng tôi chuyển ký tự String body = doc.body().text();8 cho phương thức String body = doc.body().text();4 com/zetcode/JSoupAll. java Document title
Chúng tôi lấy tất cả các thẻ từ tài liệu My title0 package com.zetcode; import org.jsoup.Jsoup; import org.jsoup.nodes.Document; public class JSoupFromStringEx { public static void main(String[] args) { String htmlString = """ My title Body content"""; Document doc = Jsoup.parse(htmlString); String title = doc.title(); String body = doc.body().text(); System.out.printf("Title: %s%n", title); System.out.printf("Body: %s", body); } }0 Chúng tôi nhận được tất cả các yếu tố package com.zetcode; import org.jsoup.Jsoup; import org.jsoup.nodes.Document; public class JSoupFromStringEx { public static void main(String[] args) { String htmlString = """ My title Body content"""; Document doc = Jsoup.parse(htmlString); String title = doc.title(); String body = doc.body().text(); System.out.printf("Title: %s%n", title); System.out.printf("Body: %s", body); } }1 Chúng tôi xem qua tất cả các yếu tố và in tên thẻ của chúng bằng My title1 Phương thức String title = doc.title();2 lấy văn bản kết hợp của phần tử này và tất cả phần tử con của nó. Khoảng trắng được chuẩn hóa và cắt bớt com/zetcode/JSoupGetText. java package com.zetcode; import org.jsoup.Jsoup; import org.jsoup.nodes.Document; public class JSoupFromStringEx { public static void main(String[] args) { String htmlString = """ My title Body content"""; Document doc = Jsoup.parse(htmlString); String title = doc.title(); String body = doc.body().text(); System.out.printf("Title: %s%n", title); System.out.printf("Body: %s", body); } }2 Trong ví dụ này, chúng tôi lấy dữ liệu văn bản từ toàn bộ tài liệu, nội dung, đoạn văn, danh sách không có thứ tự và mục danh sách đầu tiên và cuối cùng package com.zetcode; import org.jsoup.Jsoup; import org.jsoup.nodes.Document; public class JSoupFromStringEx { public static void main(String[] args) { String htmlString = """ My title Body content"""; Document doc = Jsoup.parse(htmlString); String title = doc.title(); String body = doc.body().text(); System.out.printf("Title: %s%n", title); System.out.printf("Body: %s", body); } }3 JSoup thay đổi văn bảnPhương thức String title = doc.title();2 quá tải đặt văn bản của phần tử được chỉ định com/zetcode/JSoupChangeText. java package com.zetcode; import org.jsoup.Jsoup; import org.jsoup.nodes.Document; public class JSoupFromStringEx { public static void main(String[] args) { String htmlString = """ My title Body content"""; Document doc = Jsoup.parse(htmlString); String title = doc.title(); String body = doc.body().text(); System.out.printf("Title: %s%n", title); System.out.printf("Body: %s", body); } }4 Trong ví dụ, chúng tôi thay đổi văn bản bên trong thẻ String title = doc.title();1 Có nhiều phương pháp để sửa đổi tài liệu HTML. Chẳng hạn, phương thức My title5 thêm một thẻ và phương thức My title6 thêm một thẻ vào một phần tử com/zetcode/JSoupModify. java package com.zetcode; import org.jsoup.Jsoup; import org.jsoup.nodes.Document; public class JSoupFromStringEx { public static void main(String[] args) { String htmlString = """ My title Body content"""; Document doc = Jsoup.parse(htmlString); String title = doc.title(); String body = doc.body().text(); System.out.printf("Title: %s%n", title); System.out.printf("Body: %s", body); } }5 Trong ví dụ, chúng tôi thêm các thẻ My title7 và My title8 vào tài liệu package com.zetcode; import org.jsoup.Jsoup; import org.jsoup.nodes.Document; public class JSoupFromStringEx { public static void main(String[] args) { String htmlString = """ My title Body content"""; Document doc = Jsoup.parse(htmlString); String title = doc.title(); String body = doc.body().text(); System.out.printf("Title: %s%n", title); System.out.printf("Body: %s", body); } }6 Liên kết phân tích cú pháp JSoupVí dụ tiếp theo phân tích các liên kết từ một trang HTML com/zetcode/JSoupLinksEx. java package com.zetcode; import org.jsoup.Jsoup; import org.jsoup.nodes.Document; public class JSoupFromStringEx { public static void main(String[] args) { String htmlString = """ My title Body content"""; Document doc = Jsoup.parse(htmlString); String title = doc.title(); String body = doc.body().text(); System.out.printf("Title: %s%n", title); System.out.printf("Body: %s", body); } }7 Trong ví dụ này, chúng tôi kết nối với một trang web và phân tích cú pháp tất cả các thành phần liên kết của nó package com.zetcode; import org.jsoup.Jsoup; import org.jsoup.nodes.Document; public class JSoupFromStringEx { public static void main(String[] args) { String htmlString = """ My title Body content"""; Document doc = Jsoup.parse(htmlString); String title = doc.title(); String body = doc.body().text(); System.out.printf("Title: %s%n", title); System.out.printf("Body: %s", body); } }8 Để có được danh sách các liên kết, chúng tôi sử dụng phương pháp String body = doc.body().text();4 của tài liệu JSoup cung cấp các phương thức để khử trùng dữ liệu HTML com/zetcode/JSoupSanitizeEx. java package com.zetcode; import org.jsoup.Jsoup; import org.jsoup.nodes.Document; public class JSoupFromStringEx { public static void main(String[] args) { String htmlString = """ My title Body content"""; Document doc = Jsoup.parse(htmlString); String title = doc.title(); String body = doc.body().text(); System.out.printf("Title: %s%n", title); System.out.printf("Body: %s", body); } }9 Trong ví dụ này, chúng tôi vệ sinh và làm sạch dữ liệu HTML String htmlString = """ My title Body content""";0 Chuỗi HTML chứa phần tử trung tâm, phần tử này không được dùng nữa String htmlString = """ My title Body content""";1 Phương thức package com.zetcode; import java.io.File; import java.io.IOException; import org.jsoup.Jsoup; import org.jsoup.nodes.Document; import org.jsoup.nodes.Element; public class JSoupFromFileEx { public static void main(String[] args) throws IOException { String fileName = "src/main/resources/index.html"; Document doc = Jsoup.parse(new File(fileName), "utf-8"); Element divTag = doc.getElementById("mydiv"); System.out.println(divTag.text()); } }0 xác định xem chuỗi có phải là HTML hợp lệ hay không. Danh sách trắng là danh sách HTML (phần tử và thuộc tính) có thể chuyển qua trình dọn dẹp. package com.zetcode; import java.io.File; import java.io.IOException; import org.jsoup.Jsoup; import org.jsoup.nodes.Document; import org.jsoup.nodes.Element; public class JSoupFromFileEx { public static void main(String[] args) throws IOException { String fileName = "src/main/resources/index.html"; Document doc = Jsoup.parse(new File(fileName), "utf-8"); Element divTag = doc.getElementById("mydiv"); System.out.println(divTag.text()); } }1 xác định một tập hợp các thẻ HTML sạch cơ bản String htmlString = """ My title Body content""";2 Với sự trợ giúp của package com.zetcode; import java.io.File; import java.io.IOException; import org.jsoup.Jsoup; import org.jsoup.nodes.Document; import org.jsoup.nodes.Element; public class JSoupFromFileEx { public static void main(String[] args) throws IOException { String fileName = "src/main/resources/index.html"; Document doc = Jsoup.parse(new File(fileName), "utf-8"); Element divTag = doc.getElementById("mydiv"); System.out.println(divTag.text()); } }2, chúng tôi xóa tài liệu HTML bẩn String htmlString = """ My title Body content""";3 Chúng ta có thể thấy rằng phần tử trung tâm đã bị xóa Ví dụ sau thực hiện tìm kiếm Google với Jsoup com/zetcode/JsoupGoogleSearchEx. java String htmlString = """ My title Body content""";4 Ví dụ tạo yêu cầu tìm kiếm cụm từ "Milky Way". Nó in mười tên miền phù hợp với thuật ngữ String htmlString = """ My title Body content""";5 Tìm kiếm của Google trả về các liên kết dài mà từ đó chúng tôi muốn lấy tên miền. Đối với điều này, chúng tôi sử dụng một mẫu biểu thức chính quy String htmlString = """ My title Body content""";6 package com.zetcode; import java.io.File; import java.io.IOException; import org.jsoup.Jsoup; import org.jsoup.nodes.Document; import org.jsoup.nodes.Element; public class JSoupFromFileEx { public static void main(String[] args) throws IOException { String fileName = "src/main/resources/index.html"; Document doc = Jsoup.parse(new File(fileName), "utf-8"); Element divTag = doc.getElementById("mydiv"); System.out.println(divTag.text()); } }3 trả về một tên miền từ liên kết tìm kiếm bằng cách sử dụng trình so khớp cụm từ thông dụng String htmlString = """ My title Body content""";7 Đây là thuật ngữ tìm kiếm của chúng tôi String htmlString = """ My title Body content""";8 Đây là URL để thực hiện tìm kiếm trên Google String htmlString = """ My title Body content""";9 Chúng tôi kết nối với URL, đặt thời gian chờ 5 giây và gửi yêu cầu NHẬN. Một tài liệu HTML được trả lại Document doc = Jsoup.parse(htmlString);0 Từ tài liệu, chúng tôi chọn các liên kết Document doc = Jsoup.parse(htmlString);1 Chúng tôi tìm kiếm các liên kết không có thuộc tính class="_Zkb" và có package com.zetcode; import java.io.File; import java.io.IOException; import org.jsoup.Jsoup; import org.jsoup.nodes.Document; import org.jsoup.nodes.Element; public class JSoupFromFileEx { public static void main(String[] args) throws IOException { String fileName = "src/main/resources/index.html"; Document doc = Jsoup.parse(new File(fileName), "utf-8"); Element divTag = doc.getElementById("mydiv"); System.out.println(divTag.text()); } }4. Lưu ý rằng đây là những giá trị được mã hóa cứng có thể thay đổi trong tương lai Làm cách nào để sử dụng Jsoup trong JavaScript?Trích xuất giá trị từ thuộc tính phần tử bằng cách sử dụng Jsoup và Giai đoạn JavaScript . Khai báo các lớp Java và các biến JavaScript sẽ được sử dụng. . Tiếp theo, chúng tôi kéo các phần tử “div” ra và tìm một phần tử có ID là “featured-img. ” Khi chúng tôi tìm thấy nó, chúng tôi 'ngắt' vòng lặp và tiếp tục Phần tử trong Jsoup là gì?Phần tử HTML bao gồm tên thẻ, thuộc tính và nút con (bao gồm nút văn bản và các phần tử khác) . Từ một Phần tử, bạn có thể trích xuất dữ liệu, duyệt qua biểu đồ nút và thao tác với HTML. |