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>