jsoup - Sử dụng Cú pháp Bộ chọn

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 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