jsoup - Hướng dẫn nhanh
jsoup là một thư viện dựa trên Java để làm việc với nội dung dựa trên HTML. Nó cung cấp một API rất thuận tiện để trích xuất và thao tác dữ liệu, sử dụng các phương thức tốt nhất của DOM, CSS và jquery. Nó triển khai đặc điểm kỹ thuật HTML5 của WHATWG và phân tích cú pháp HTML thành DOM giống như các trình duyệt hiện đại.
jsoup libary triển khai thông số kỹ thuật HTML5 của WHATWG và phân tích cú pháp nội dung HTML sang cùng một DOM như trên các trình duyệt hiện đại.
thư viện jsonp cung cấp các chức năng sau.
Multiple Read Support - Nó đọc và phân tích cú pháp HTML bằng URL, tệp hoặc chuỗi.
CSS Selectors - Nó có thể tìm và trích xuất dữ liệu bằng cách sử dụng các bộ chọn truyền tải DOM hoặc CSS.
DOM Manipulation - Nó có thể thao tác các phần tử, thuộc tính và văn bản HTML.
Prevent XSS attacks - Nó có thể làm sạch nội dung do người dùng gửi so với danh sách trắng an toàn nhất định, để ngăn chặn các cuộc tấn công XSS.
Tidy - Nó xuất ra HTML gọn gàng.
Handles invalid data - jsoup có thể xử lý các thẻ không đóng, các thẻ ngầm và có thể tạo cấu trúc tài liệu một cách đáng tin cậy.
Thiết lập môi trường cục bộ
JUnit là một khuôn khổ cho Java, vì vậy yêu cầu đầu tiên là phải cài đặt JDK trong máy của bạn.
Yêu cầu hệ thống
JDK | 1,5 trở lên. |
---|---|
Ký ức | Không có yêu cầu tối thiểu. |
Dung lượng đĩa | Không có yêu cầu tối thiểu. |
Hệ điều hành | Không có yêu cầu tối thiểu. |
Bước 1: Xác minh cài đặt Java trong máy của bạn
Trước hết, mở bảng điều khiển và thực hiện một lệnh java dựa trên hệ điều hành bạn đang làm việc.
Hệ điều hành | Bài tập | Chỉ huy |
---|---|---|
các cửa sổ | Mở bảng điều khiển lệnh | c: \> java -version |
Linux | Mở Command Terminal | $ java -version |
Mac | Mở thiết bị đầu cuối | máy: <joseph $ java -version |
Hãy xác minh kết quả đầu ra cho tất cả các hệ điều hành -
Hệ điều hành | Đầu ra |
---|---|
các cửa sổ | phiên bản java "1.6.0_21" Môi trường thời gian chạy Java (TM) SE (bản dựng 1.6.0_21-b07) Máy khách Java HotSpot (TM) (xây dựng 17.0-b17, chế độ hỗn hợp, chia sẻ) |
Linux | phiên bản java "1.6.0_21" Môi trường thời gian chạy Java (TM) SE (bản dựng 1.6.0_21-b07) Máy khách Java HotSpot (TM) (xây dựng 17.0-b17, chế độ hỗn hợp, chia sẻ) |
Mac | phiên bản java "1.6.0_21" Môi trường thời gian chạy Java (TM) SE (bản dựng 1.6.0_21-b07) Máy chủ ảo Java HotSpot (TM) 64-Bit (bản dựng 17.0-b17, chế độ hỗn hợp, chia sẻ) |
Nếu bạn chưa cài đặt Java trên hệ thống của mình, hãy tải xuống Bộ phát triển phần mềm Java (SDK) từ liên kết sau https://www.oracle.com. Chúng tôi giả định Java 1.6.0_21 là phiên bản đã cài đặt cho hướng dẫn này.
Bước 2: Đặt Môi trường JAVA
Đặt JAVA_HOMEbiến môi trường để trỏ đến vị trí thư mục cơ sở nơi Java được cài đặt trên máy của bạn. Ví dụ.
Hệ điều hành | Đầu ra |
---|---|
các cửa sổ | Đặt biến môi trường JAVA_HOME thành C: \ Program Files \ Java \ jdk1.6.0_21 |
Linux | xuất JAVA_HOME = / usr / local / java-current |
Mac | export JAVA_HOME = / Library / Java / Home |
Nối vị trí trình biên dịch Java vào Đường dẫn Hệ thống.
Hệ điều hành | Đầu ra |
---|---|
các cửa sổ | Nối chuỗi C:\Program Files\Java\jdk1.6.0_21\bin ở cuối biến hệ thống, Path. |
Linux | xuất PATH = $ PATH: $ JAVA_HOME / bin / |
Mac | không yêu cầu |
Xác minh cài đặt Java bằng lệnh java -version Như đã giải thích ở trên.
Bước 3: Tải xuống jsoup Archive
Tải xuống phiên bản mới nhất của tệp jar jsoup từ Maven Repository . Tại thời điểm viết hướng dẫn này, chúng tôi đã tải xuống jsoup-1.8.3.jar và sao chép nó vào thư mục C: \> jsoup.
Hệ điều hành | Tên lưu trữ |
---|---|
các cửa sổ | jsoup-1.8.3.jar |
Linux | jsoup-1.8.3.jar |
Mac | jsoup-1.8.3.jar |
Bước 4: Đặt môi trường jsoup
Đặt JSOUP_HOMEbiến môi trường để trỏ đến vị trí thư mục cơ sở nơi lưu trữ jsoup jar trên máy của bạn. Giả sử chúng ta đã lưu trữ jsoup-1.8.3.jar trong thư mục JSOUP.
Sr.No | Hệ điều hành & Mô tả |
---|---|
1 | Windows Đặt biến môi trường JSOUP_HOME thành C: \ JSOUP |
2 | Linux xuất JSOUP_HOME = / usr / local / JSOUP |
3 | Mac xuất JSOUP_HOME = / Library / JSOUP |
Bước 5: Đặt biến CLASSPATH
Đặt CLASSPATH biến môi trường để trỏ đến vị trí jar JSOUP.
Sr.No | Hệ điều hành & Mô tả |
---|---|
1 | Windows Đặt biến môi trường CLASSPATH thành% CLASSPATH%;% JSOUP_HOME% \ jsoup-1.8.3.jar;.; |
2 | Linux xuất CLASSPATH = $ CLASSPATH: $ JSOUP_HOME / jsoup-1.8.3.jar:. |
3 | Mac xuất CLASSPATH = $ CLASSPATH: $ JSOUP_HOME / jsoup-1.8.3.jar:. |
Ví dụ sau sẽ giới thiệu việc phân tích cú pháp một Chuỗi HTML thành một đối tượng Tài liệu.
Cú pháp
Document document = Jsoup.parse(html);
Ở đâu
document - đối tượng tài liệu đại diện cho HTML DOM.
Jsoup - lớp chính để phân tích cú pháp chuỗi HTML đã cho.
html - Chuỗi HTML.
Sự miêu tả
Phương thức phân tích cú pháp (String html) phân tích cú pháp HTML đầu vào thành một Tài liệu mới. Đối tượng tài liệu này có thể được sử dụng để xem qua và lấy thông tin chi tiết về html dom.
Thí dụ
Tạo chương trình java sau bằng cách sử dụng bất kỳ trình soạn thảo nào bạn chọn trong C: /> jsoup.
JsoupTester.java
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;
public class JsoupTester {
public static void main(String[] args) {
String html = "<html><head><title>Sample Title</title></head>"
+ "<body><p>Sample Content</p></body></html>";
Document document = Jsoup.parse(html);
System.out.println(document.title());
Elements paragraphs = document.getElementsByTag("p");
for (Element paragraph : paragraphs) {
System.out.println(paragraph.text());
}
}
}
Xác minh kết quả
Biên dịch lớp bằng cách sử dụng javac trình biên dịch như sau:
C:\jsoup>javac JsoupTester.java
Bây giờ hãy chạy JsoupTester để xem kết quả.
C:\jsoup>java JsoupTester
Xem kết quả.
Sample Title
Sample Content
Ví dụ sau sẽ giới thiệu việc phân tích cú pháp một Chuỗi phân đoạn HTML thành một đối tượng Phần tử dưới dạng nội dung html.
Cú pháp
Document document = Jsoup.parseBodyFragment(html);
Element body = document.body();
Ở đâu
document - đối tượng tài liệu đại diện cho HTML DOM.
Jsoup - lớp chính để phân tích cú pháp chuỗi HTML đã cho.
html - Chuỗi phân đoạn HTML.
body - đại diện cho phần tử con của phần tử body của tài liệu và tương đương với document.getElementsByTag ("body").
Sự miêu tả
Phương thức parseBodyFragment (String html) phân tích cú pháp HTML đầu vào thành một Tài liệu mới. Đối tượng tài liệu này có thể được sử dụng để xem qua và lấy thông tin chi tiết của đoạn nội dung html.
Thí dụ
Tạo chương trình java sau bằng cách sử dụng bất kỳ trình soạn thảo nào bạn chọn trong C: /> jsoup.
JsoupTester.java
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;
public class JsoupTester {
public static void main(String[] args) {
String html = "<div><p>Sample Content</p>";
Document document = Jsoup.parseBodyFragment(html);
Element body = document.body();
Elements paragraphs = body.getElementsByTag("p");
for (Element paragraph : paragraphs) {
System.out.println(paragraph.text());
}
}
}
Xác minh kết quả
Biên dịch lớp bằng cách sử dụng javac trình biên dịch như sau:
C:\jsoup>javac JsoupTester.java
Bây giờ hãy chạy JsoupTester để xem kết quả.
C:\jsoup>java JsoupTester
Xem kết quả.
Sample Content
Ví dụ sau sẽ giới thiệu việc tìm nạp một HTML từ web bằng cách sử dụng url và sau đó tìm dữ liệu của nó.
Cú pháp
String url = "http://www.google.com";
Document document = Jsoup.connect(url).get();
Ở đâu
document - đối tượng tài liệu đại diện cho HTML DOM.
Jsoup - lớp chính để kết nối url và lấy Chuỗi HTML.
url - url của trang html cần tải.
Sự miêu tả
Phương thức connect (url) tạo kết nối với url và phương thức get () trả về html của url được yêu cầu.
Thí dụ
Tạo chương trình java sau bằng cách sử dụng bất kỳ trình soạn thảo nào bạn chọn trong C: /> jsoup.
JsoupTester.java
import java.io.IOException;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
public class JsoupTester {
public static void main(String[] args) throws IOException {
String url = "http://www.google.com";
Document document = Jsoup.connect(url).get();
System.out.println(document.title());
}
}
Xác minh kết quả
Biên dịch lớp bằng cách sử dụng javac trình biên dịch như sau:
C:\jsoup>javac JsoupTester.java
Bây giờ hãy chạy JsoupTester để xem kết quả.
C:\jsoup>java JsoupTester
Xem kết quả.
Google
Ví dụ sau sẽ giới thiệu việc tìm nạp một HTML từ đĩa bằng một tệp và sau đó tìm dữ liệu của nó.
Cú pháp
String url = "http://www.google.com";
Document document = Jsoup.connect(url).get();
Ở đâu
document - đối tượng tài liệu đại diện cho HTML DOM.
Jsoup - lớp chính để kết nối url và lấy Chuỗi HTML.
url - url của trang html cần tải.
Sự miêu tả
Phương thức connect (url) tạo kết nối với url và phương thức get () trả về html của url được yêu cầu.
Thí dụ
Tạo chương trình java sau bằng cách sử dụng bất kỳ trình soạn thảo nào bạn chọn trong C: /> jsoup.
JsoupTester.java
import java.io.File;
import java.io.IOException;
import java.net.URISyntaxException;
import java.net.URL;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
public class JsoupTester {
public static void main(String[] args) throws IOException, URISyntaxException {
URL path = ClassLoader.getSystemResource("test.htm");
File input = new File(path.toURI());
Document document = Jsoup.parse(input, "UTF-8");
System.out.println(document.title());
}
}
test.htm
Tạo tệp test.htm sau trong thư mục C: \ jsoup.
<html>
<head>
<title>Sample Title</title>
</head>
<body>
<p>Sample Content</p>
</body>
</html>
Xác minh kết quả
Biên dịch lớp bằng cách sử dụng javac trình biên dịch như sau:
C:\jsoup>javac JsoupTester.java
Bây giờ hãy chạy JsoupTester để xem kết quả.
C:\jsoup>java JsoupTester
Xem kết quả.
Sample Title
Ví dụ sau sẽ giới thiệu việc sử dụng các phương thức như DOM sau khi phân tích cú pháp một Chuỗi HTML thành một đối tượng Tài liệu.
Cú pháp
Document document = Jsoup.parse(html);
Element sampleDiv = document.getElementById("sampleDiv");
Elements links = sampleDiv.getElementsByTag("a");
Ở đâu
document - đối tượng tài liệu đại diện cho HTML DOM.
Jsoup - lớp chính để phân tích cú pháp chuỗi HTML đã cho.
html - Chuỗi HTML.
sampleDiv - Đối tượng phần tử đại diện cho phần tử nút html được xác định bởi id "sampleDiv".
links - Đối tượng Elements đại diện cho nhiều phần tử nút được xác định bởi thẻ "a".
Sự miêu tả
Phương thức phân tích cú pháp (String html) phân tích cú pháp HTML đầu vào thành một Tài liệu mới. Đối tượng tài liệu này có thể được sử dụng để xem qua và lấy thông tin chi tiết về html dom.
Thí dụ
Tạo chương trình java sau bằng cách sử dụng bất kỳ trình soạn thảo nào bạn chọn trong C: /> jsoup.
JsoupTester.java
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;
public class JsoupTester {
public static void main(String[] args) {
String html = "<html><head><title>Sample Title</title></head>"
+ "<body>"
+ "<p>Sample Content</p>"
+ "<div id='sampleDiv'><a href='www.google.com'>Google</a></div>"
+"</body></html>";
Document document = Jsoup.parse(html);
System.out.println(document.title());
Elements paragraphs = document.getElementsByTag("p");
for (Element paragraph : paragraphs) {
System.out.println(paragraph.text());
}
Element sampleDiv = document.getElementById("sampleDiv");
System.out.println("Data: " + sampleDiv.text());
Elements links = sampleDiv.getElementsByTag("a");
for (Element link : links) {
System.out.println("Href: " + link.attr("href"));
System.out.println("Text: " + link.text());
}
}
}
Xác minh kết quả
Biên dịch lớp bằng cách sử dụng javac trình biên dịch như sau:
C:\jsoup>javac JsoupTester.java
Bây giờ hãy chạy JsoupTester để xem kết quả.
C:\jsoup>java JsoupTester
Xem kết quả.
Sample Title
Sample Content
Data: Google
Href: www.google.com
Text: Google
Ví dụ sau sẽ giới thiệu việc sử dụng các phương thức bộ chọn sau khi phân tích cú pháp một Chuỗi HTML thành một đối tượng Tài liệu. jsoup hỗ trợ các bộ chọn tương tự như Bộ chọn CSS.
Cú pháp
Document document = Jsoup.parse(html);
Element sampleDiv = document.getElementById("sampleDiv");
Elements links = sampleDiv.getElementsByTag("a");
Ở đâu
document - đối tượng tài liệu đại diện cho HTML DOM.
Jsoup - lớp chính để phân tích cú pháp chuỗi HTML đã cho.
html - Chuỗi HTML.
sampleDiv - Đối tượng phần tử đại diện cho phần tử nút html được xác định bởi id "sampleDiv".
links - Đối tượng Elements đại diện cho nhiều phần tử nút được xác định bởi thẻ "a".
Sự miêu tả
Phương thức document.select (biểu thức) phân tích cú pháp biểu thức bộ chọn CSS đã cho để chọn một phần tử html dom.
Thí dụ
Tạo chương trình java sau bằng cách sử dụng bất kỳ trình soạn thảo nào bạn chọn trong C: /> jsoup.
JsoupTester.java
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;
public class JsoupTester {
public static void main(String[] args) {
String html = "<html><head><title>Sample Title</title></head>"
+ "<body>"
+ "<p>Sample Content</p>"
+ "<div id='sampleDiv'><a href='www.google.com'>Google</a>"
+ "<h3><a>Sample</a><h3>"
+"</div>"
+ "<div id='imageDiv' class='header'><img name='google' src='google.png' />"
+ "<img name='yahoo' src='yahoo.jpg' />"
+"</div>"
+"</body></html>";
Document document = Jsoup.parse(html);
//a with href
Elements links = document.select("a[href]");
for (Element link : links) {
System.out.println("Href: " + link.attr("href"));
System.out.println("Text: " + link.text());
}
// img with src ending .png
Elements pngs = document.select("img[src$=.png]");
for (Element png : pngs) {
System.out.println("Name: " + png.attr("name"));
}
// div with class=header
Element headerDiv = document.select("div.header").first();
System.out.println("Id: " + headerDiv.id());
// direct a after h3
Elements sampleLinks = document.select("h3 > a");
for (Element link : sampleLinks) {
System.out.println("Text: " + link.text());
}
}
}
Xác minh kết quả
Biên dịch lớp bằng cách sử dụng javac trình biên dịch như sau:
C:\jsoup>javac JsoupTester.java
Bây giờ hãy chạy JsoupTester để xem kết quả.
C:\jsoup>java JsoupTester
Xem kết quả.
Href: www.google.com
Text: Google
Name: google
Id: imageDiv
Text: Sample
Ví dụ sau sẽ giới thiệu việc sử dụng phương thức để lấy thuộc tính của phần tử dom sau khi phân tích cú pháp Chuỗi HTML thành đối tượng Tài liệu.
Cú pháp
Document document = Jsoup.parse(html);
Element link = document.select("a").first();
System.out.println("Href: " + link.attr("href"));
Ở đâu
document - đối tượng tài liệu đại diện cho HTML DOM.
Jsoup - lớp chính để phân tích cú pháp chuỗi HTML đã cho.
html - Chuỗi HTML.
link - Đối tượng phần tử đại diện cho phần tử nút html đại diện cho thẻ neo.
link.attr() - Phương thức attr (thuộc tính) truy xuất lại thuộc tính phần tử.
Sự miêu tả
Đối tượng phần tử đại diện cho một phần tử dom và cung cấp nhiều phương thức khác nhau để lấy thuộc tính của phần tử dom.
Thí dụ
Tạo chương trình java sau bằng cách sử dụng bất kỳ trình soạn thảo nào bạn chọn trong C: /> jsoup.
JsoupTester.java
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
public class JsoupTester {
public static void main(String[] args) {
String html = "<html><head><title>Sample Title</title></head>"
+ "<body>"
+ "<p>Sample Content</p>"
+ "<div id='sampleDiv'><a href='www.google.com'>Google</a>"
+ "<h3><a>Sample</a><h3>"
+"</div>"
+"</body></html>";
Document document = Jsoup.parse(html);
//a with href
Element link = document.select("a").first();
System.out.println("Href: " + link.attr("href"));
}
}
Xác minh kết quả
Biên dịch lớp bằng cách sử dụng javac trình biên dịch như sau:
C:\jsoup>javac JsoupTester.java
Bây giờ hãy chạy JsoupTester để xem kết quả.
C:\jsoup>java JsoupTester
Xem kết quả.
Href: www.google.com
Ví dụ sau sẽ giới thiệu cách sử dụng các phương thức để lấy văn bản sau khi phân tích cú pháp một Chuỗi HTML thành một đối tượng Tài liệu.
Cú pháp
Document document = Jsoup.parse(html);
Element link = document.select("a").first();
System.out.println("Text: " + link.text());
Ở đâu
document - đối tượng tài liệu đại diện cho HTML DOM.
Jsoup - lớp chính để phân tích cú pháp chuỗi HTML đã cho.
html - Chuỗi HTML.
link - Đối tượng phần tử đại diện cho phần tử nút html đại diện cho thẻ neo.
link.text() - Phương thức text () truy xuất lại văn bản phần tử.
Sự miêu tả
Đối tượng phần tử đại diện cho một phần tử dom và cung cấp nhiều phương thức khác nhau để lấy văn bản của phần tử dom.
Thí dụ
Tạo chương trình java sau bằng cách sử dụng bất kỳ trình soạn thảo nào bạn chọn trong C: /> jsoup.
JsoupTester.java
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
public class JsoupTester {
public static void main(String[] args) {
String html = "<html><head><title>Sample Title</title></head>"
+ "<body>"
+ "<p>Sample Content</p>"
+ "<div id='sampleDiv'><a href='www.google.com'>Google</a>"
+ "<h3><a>Sample</a><h3>"
+"</div>"
+"</body></html>";
Document document = Jsoup.parse(html);
//a with href
Element link = document.select("a").first();
System.out.println("Text: " + link.text());
}
}
Xác minh kết quả
Biên dịch lớp bằng cách sử dụng javac trình biên dịch như sau:
C:\jsoup>javac JsoupTester.java
Bây giờ hãy chạy JsoupTester để xem kết quả.
C:\jsoup>java JsoupTester
Xem kết quả.
Text: Google
Ví dụ sau sẽ giới thiệu cách sử dụng các phương thức để lấy html bên trong và html bên ngoài sau khi phân tích cú pháp một Chuỗi HTML thành một đối tượng Tài liệu.
Cú pháp
Document document = Jsoup.parse(html);
Element link = document.select("a").first();
System.out.println("Outer HTML: " + link.outerHtml());
System.out.println("Inner HTML: " + link.html());
Ở đâu
document - đối tượng tài liệu đại diện cho HTML DOM.
Jsoup - lớp chính để phân tích cú pháp chuỗi HTML đã cho.
html - Chuỗi HTML.
link - Đối tượng phần tử đại diện cho phần tử nút html đại diện cho thẻ neo.
link.outerHtml() - Phương thức externalHtml () truy xuất lại phần tử html hoàn chỉnh.
link.html() - Phương thức html () truy xuất lại phần tử bên trong html.
Sự miêu tả
Đối tượng phần tử đại diện cho một phần tử dom và cung cấp nhiều phương thức khác nhau để lấy html của phần tử dom.
Thí dụ
Tạo chương trình java sau bằng cách sử dụng bất kỳ trình soạn thảo nào bạn chọn trong C: /> jsoup.
JsoupTester.java
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
public class JsoupTester {
public static void main(String[] args) {
String html = "<html><head><title>Sample Title</title></head>"
+ "<body>"
+ "<p>Sample Content</p>"
+ "<div id='sampleDiv'><a href='www.google.com'>Google</a>"
+ "<h3><a>Sample</a><h3>"
+"</div>"
+"</body></html>";
Document document = Jsoup.parse(html);
//a with href
Element link = document.select("a").first();
System.out.println("Outer HTML: " + link.outerHtml());
System.out.println("Inner HTML: " + link.html());
}
}
Xác minh kết quả
Biên dịch lớp bằng cách sử dụng javac trình biên dịch như sau:
C:\jsoup>javac JsoupTester.java
Bây giờ hãy chạy JsoupTester để xem kết quả.
C:\jsoup>java JsoupTester
Xem kết quả.
Outer HTML: <a href="www.google.com">Google</a>
Inner HTML: Google
Ví dụ sau sẽ giới thiệu các phương thức có thể cung cấp các URL tương đối cũng như tuyệt đối có trong trang html.
Cú pháp
String url = "http://www.tutorialspoint.com/";
Document document = Jsoup.connect(url).get();
Element link = document.select("a").first();
System.out.println("Relative Link: " + link.attr("href"));
System.out.println("Absolute Link: " + link.attr("abs:href"));
System.out.println("Absolute Link: " + link.absUrl("href"));
Ở đâu
document - đối tượng tài liệu đại diện cho HTML DOM.
Jsoup - lớp chính để kết nối với url và lấy nội dung html.
link - Đối tượng phần tử đại diện cho phần tử nút html đại diện cho thẻ neo.
link.attr("href")- cung cấp giá trị của href có trong thẻ liên kết. Nó có thể là tương đối hoặc tuyệt đối.
link.attr("abs:href") - cung cấp url tuyệt đối sau khi phân giải với URI cơ sở của tài liệu.
link.absUrl("href") - cung cấp url tuyệt đối sau khi phân giải với URI cơ sở của tài liệu.
Sự miêu tả
Đối tượng phần tử đại diện cho một phần tử dom và cung cấp các phương pháp để lấy các URL tương đối cũng như tuyệt đối có trong trang html.
Thí dụ
Tạo chương trình java sau bằng cách sử dụng bất kỳ trình soạn thảo nào bạn chọn trong C: /> jsoup.
JsoupTester.java
import java.io.IOException;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
public class JsoupTester {
public static void main(String[] args) throws IOException {
String url = "http://www.tutorialspoint.com/";
Document document = Jsoup.connect(url).get();
Element link = document.select("a").first();
System.out.println("Relative Link: " + link.attr("href"));
System.out.println("Absolute Link: " + link.attr("abs:href"));
System.out.println("Absolute Link: " + link.absUrl("href"));
}
}
Xác minh kết quả
Biên dịch lớp bằng cách sử dụng javac trình biên dịch như sau:
C:\jsoup>javac JsoupTester.java
Bây giờ hãy chạy JsoupTester để xem kết quả.
C:\jsoup>java JsoupTester
Xem kết quả.
Relative Link: index.htm
Absolute Link: https://www.tutorialspoint.com/index.htm
Absolute Link: https://www.tutorialspoint.com/index.htm
Ví dụ sau sẽ giới thiệu cách sử dụng phương thức để đặt thuộc tính của phần tử dom, cập nhật hàng loạt và thêm / xóa phương thức lớp sau khi phân tích cú pháp một Chuỗi HTML thành một đối tượng Tài liệu.
Cú pháp
Document document = Jsoup.parse(html);
Element link = document.select("a").first();
link.attr("href","www.yahoo.com");
link.addClass("header");
link.removeClass("header");
Ở đâu
document - đối tượng tài liệu đại diện cho HTML DOM.
Jsoup - lớp chính để phân tích cú pháp chuỗi HTML đã cho.
html - Chuỗi HTML.
link - Đối tượng phần tử đại diện cho phần tử nút html đại diện cho thẻ neo.
link.attr() - Phương thức attr (thuộc tính, giá trị) thiết lập giá trị tương ứng của thuộc tính phần tử.
link.addClass() - Phương thức addClass (class) thêm lớp dưới thuộc tính class.
link.removeClass() - Phương thức removeClass (class) loại bỏ lớp dưới thuộc tính class.
Sự miêu tả
Đối tượng phần tử đại diện cho một phần tử dom và cung cấp nhiều phương thức khác nhau để lấy thuộc tính của phần tử dom.
Thí dụ
Tạo chương trình java sau bằng cách sử dụng bất kỳ trình soạn thảo nào bạn chọn trong C: /> jsoup.
JsoupTester.java
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;
public class JsoupTester {
public static void main(String[] args) {
String html = "<html><head><title>Sample Title</title></head>"
+ "<body>"
+ "<p>Sample Content</p>"
+ "<div id='sampleDiv'><a id='googleA' href='www.google.com'>Google</a></div>"
+ "<div class='comments'><a href='www.sample1.com'>Sample1</a>"
+ "<a href='www.sample2.com'>Sample2</a>"
+ "<a href='www.sample3.com'>Sample3</a><div>"
+"</div>"
+ "<div id='imageDiv' class='header'><img name='google' src='google.png' />"
+ "<img name='yahoo' src='yahoo.jpg' />"
+"</div>"
+"</body></html>";
Document document = Jsoup.parse(html);
//Example: set attribute
Element link = document.getElementById("googleA");
System.out.println("Outer HTML Before Modification :" + link.outerHtml());
link.attr("href","www.yahoo.com");
System.out.println("Outer HTML After Modification :" + link.outerHtml());
System.out.println("---");
//Example: add class
Element div = document.getElementById("sampleDiv");
System.out.println("Outer HTML Before Modification :" + div.outerHtml());
link.addClass("header");
System.out.println("Outer HTML After Modification :" + div.outerHtml());
System.out.println("---");
//Example: remove class
Element div1 = document.getElementById("imageDiv");
System.out.println("Outer HTML Before Modification :" + div1.outerHtml());
div1.removeClass("header");
System.out.println("Outer HTML After Modification :" + div1.outerHtml());
System.out.println("---");
//Example: bulk update
Elements links = document.select("div.comments a");
System.out.println("Outer HTML Before Modification :" + links.outerHtml());
links.attr("rel", "nofollow");
System.out.println("Outer HTML Before Modification :" + links.outerHtml());
}
}
Xác minh kết quả
Biên dịch lớp bằng cách sử dụng javac trình biên dịch như sau:
C:\jsoup>javac JsoupTester.java
Bây giờ hãy chạy JsoupTester để xem kết quả.
C:\jsoup>java JsoupTester
Xem kết quả.
Outer HTML Before Modification :<a id="googleA" href="www.google.com">Google</a>
Outer HTML After Modification :<a id="googleA" href="www.yahoo.com">Google</a>
---
Outer HTML Before Modification :<div id="sampleDiv">
<a id="googleA" href="www.yahoo.com">Google</a>
</div>
Outer HTML After Modification :<div id="sampleDiv">
<a id="googleA" href="www.yahoo.com" class="header">Google</a>
</div>
---
Outer HTML Before Modification :<div id="imageDiv" class="header">
<img name="google" src="google.png">
<img name="yahoo" src="yahoo.jpg">
</div>
Outer HTML After Modification :<div id="imageDiv" class="">
<img name="google" src="google.png">
<img name="yahoo" src="yahoo.jpg">
</div>
---
Outer HTML Before Modification :<a href="www.sample1.com">Sample1</a>
<a href="www.sample2.com">Sample2</a>
<a href="www.sample3.com">Sample3</a>
Outer HTML Before Modification :<a href="www.sample1.com" rel="nofollow">Sample1</a>
<a href="www.sample2.com" rel="nofollow">Sample2</a>
<a href="www.sample3.com" rel="nofollow">Sample3</a>
Ví dụ sau sẽ giới thiệu cách sử dụng phương thức để đặt, thêm trước hoặc nối thêm html vào phần tử dom sau khi phân tích cú pháp Chuỗi HTML thành đối tượng Tài liệu.
Cú pháp
Document document = Jsoup.parse(html);
Element div = document.getElementById("sampleDiv");
div.html("<p>This is a sample content.</p>");
div.prepend("<p>Initial Text</p>");
div.append("<p>End Text</p>");
Ở đâu
document - đối tượng tài liệu đại diện cho HTML DOM.
Jsoup - lớp chính để phân tích cú pháp chuỗi HTML đã cho.
html - Chuỗi HTML.
div - Đối tượng phần tử đại diện cho phần tử nút html đại diện cho thẻ neo.
div.html() - Phương thức html (content) thay thế html bên ngoài của phần tử bằng giá trị tương ứng.
div.prepend() - Phương thức prepend (content) thêm nội dung vào trước html bên ngoài.
div.append() - Phương thức append (content) thêm nội dung vào sau html bên ngoài.
Sự miêu tả
Đối tượng phần tử đại diện cho một phần tử dom và cung cấp nhiều phương pháp khác nhau để đặt, thêm trước hoặc nối thêm html vào một phần tử dom.
Thí dụ
Tạo chương trình java sau bằng cách sử dụng bất kỳ trình soạn thảo nào bạn chọn trong C: /> jsoup.
JsoupTester.java
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
public class JsoupTester {
public static void main(String[] args) {
String html = "<html><head><title>Sample Title</title></head>"
+ "<body>"
+ "<div id='sampleDiv'><a id='googleA' href='www.google.com'>Google</a></div>"
+"</body></html>";
Document document = Jsoup.parse(html);
Element div = document.getElementById("sampleDiv");
System.out.println("Outer HTML Before Modification :\n" + div.outerHtml());
div.html("<p>This is a sample content.</p>");
System.out.println("Outer HTML After Modification :\n" + div.outerHtml());
div.prepend("<p>Initial Text</p>");
System.out.println("After Prepend :\n" + div.outerHtml());
div.append("<p>End Text</p>");
System.out.println("After Append :\n" + div.outerHtml());
}
}
Xác minh kết quả
Biên dịch lớp bằng cách sử dụng javac trình biên dịch như sau:
C:\jsoup>javac JsoupTester.java
Bây giờ hãy chạy JsoupTester để xem kết quả.
C:\jsoup>java JsoupTester
Xem kết quả.
Outer HTML Before Modification :
<div id="sampleDiv">
<a id="googleA" href="www.google.com">Google</a>
</div>
Outer HTML After Modification :
<div id="sampleDiv">
<p>This is a sample content.</p>
</div>
After Prepend :
<div id="sampleDiv">
<p>Initial Text</p>
<p>This is a sample content.</p>
</div>
After Append :
<div id="sampleDiv">
<p>Initial Text</p>
<p>This is a sample content.</p>
<p>End Text</p>
</div>
Outer HTML Before Modification :
<span>Sample Content</span>
Outer HTML After Modification :
<span>Sample Content</span>
Ví dụ sau sẽ giới thiệu việc sử dụng phương thức để đặt, thêm trước hoặc nối văn bản vào phần tử dom sau khi phân tích cú pháp Chuỗi HTML thành đối tượng Tài liệu.
Cú pháp
Document document = Jsoup.parse(html);
Element div = document.getElementById("sampleDiv");
div.text("This is a sample content.");
div.prepend("Initial Text.");
div.append("End Text.");
Ở đâu
document - đối tượng tài liệu đại diện cho HTML DOM.
Jsoup - lớp chính để phân tích cú pháp chuỗi HTML đã cho.
html - Chuỗi HTML.
div - Đối tượng phần tử đại diện cho phần tử nút html đại diện cho thẻ neo.
div.text() - phương thức text (nội dung) thay thế nội dung của phần tử bằng giá trị tương ứng.
div.prepend() - Phương thức prepend (content) thêm nội dung vào trước html bên ngoài.
div.append() - Phương thức append (content) thêm nội dung vào sau html bên ngoài.
Sự miêu tả
Đối tượng phần tử đại diện cho một phần tử dom và cung cấp nhiều phương pháp khác nhau để đặt, thêm trước hoặc nối thêm html vào một phần tử dom.
Thí dụ
Tạo chương trình java sau bằng cách sử dụng bất kỳ trình soạn thảo nào bạn chọn trong C: /> jsoup.
JsoupTester.java
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
public class JsoupTester {
public static void main(String[] args) {
String html = "<html><head><title>Sample Title</title></head>"
+ "<body>"
+ "<div id='sampleDiv'><a id='googleA' href='www.google.com'>Google</a></div>"
+"</body></html>";
Document document = Jsoup.parse(html);
Element div = document.getElementById("sampleDiv");
System.out.println("Outer HTML Before Modification :\n" + div.outerHtml());
div.text(This is a sample content.");
System.out.println("Outer HTML After Modification :\n" + div.outerHtml());
div.prepend("Initial Text.");
System.out.println("After Prepend :\n" + div.outerHtml());
div.append("End Text.");
System.out.println("After Append :\n" + div.outerHtml());
}
}
Xác minh kết quả
Biên dịch lớp bằng cách sử dụng javac trình biên dịch như sau:
C:\jsoup>javac JsoupTester.java
Bây giờ hãy chạy JsoupTester để xem kết quả.
C:\jsoup>java JsoupTester
Xem kết quả.
Outer HTML Before Modification :
<div id="sampleDiv">
<a id="googleA" href="www.google.com">Google</a>
</div>
Outer HTML After Modification :
<div id="sampleDiv">
This is a sample content.
</div>
After Prepend :
<div id="sampleDiv">
Initial Text.This is a sample content.
</div>
After Append :
<div id="sampleDiv">
Initial Text.This is a sample content.End Text.
</div>
Ví dụ sau sẽ giới thiệu việc ngăn chặn các cuộc tấn công XSS hoặc cuộc tấn công kịch bản trên nhiều trang web.
Cú pháp
String safeHtml = Jsoup.clean(html, Whitelist.basic());
Ở đâu
Jsoup - lớp chính để phân tích cú pháp chuỗi HTML đã cho.
html - Chuỗi HTML ban đầu.
safeHtml - HTML sạch.
Whitelist - Đối tượng cung cấp cấu hình mặc định để bảo vệ html.
clean() - làm sạch html bằng cách sử dụng Danh sách trắng.
Sự miêu tả
Đối tượng jsoup khử trùng một html bằng cách sử dụng cấu hình Danh sách trắng.
Thí dụ
Tạo chương trình java sau bằng cách sử dụng bất kỳ trình soạn thảo nào bạn chọn trong C: /> jsoup.
JsoupTester.java
import org.jsoup.Jsoup;
import org.jsoup.safety.Whitelist;
public class JsoupTester {
public static void main(String[] args) {
String html = "<p><a href='http://example.com/'"
+" onclick='checkData()'>Link</a></p>";
System.out.println("Initial HTML: " + html);
String safeHtml = Jsoup.clean(html, Whitelist.basic());
System.out.println("Cleaned HTML: " +safeHtml);
}
}
Xác minh kết quả
Biên dịch lớp bằng cách sử dụng javac trình biên dịch như sau:
C:\jsoup>javac JsoupTester.java
Bây giờ hãy chạy JsoupTester để xem kết quả.
C:\jsoup>java JsoupTester
Xem kết quả.
Initial HTML: <p><a href='http://example.com/' onclick='checkData()'>Link</a></p>
Cleaned HTML: <p><a href="http://example.com/" rel="nofollow">Link</a></p>