jsoup - คู่มือฉบับย่อ

jsoup เป็นไลบรารีที่ใช้ Java เพื่อทำงานกับเนื้อหาที่ใช้ HTML มี API ที่สะดวกมากในการแยกและจัดการข้อมูลโดยใช้วิธีที่ดีที่สุดของ DOM, CSS และ jquery โดยใช้ข้อกำหนด WHATWG HTML5 และแยกวิเคราะห์ HTML เป็น DOM เช่นเดียวกับเบราว์เซอร์สมัยใหม่

jsoup libary ใช้ข้อกำหนด WHATWG HTML5 และแยกวิเคราะห์เนื้อหา HTML เป็น DOM เดียวกันตามเบราว์เซอร์สมัยใหม่

jsonp library มีฟังก์ชันการทำงานดังต่อไปนี้

  • Multiple Read Support - อ่านและแยกวิเคราะห์ HTML โดยใช้ URL ไฟล์หรือสตริง

  • CSS Selectors - สามารถค้นหาและแยกข้อมูลโดยใช้ DOM traversal หรือ CSS selectors

  • DOM Manipulation - สามารถปรับเปลี่ยนองค์ประกอบ HTML คุณลักษณะและข้อความ

  • Prevent XSS attacks - สามารถทำความสะอาดเนื้อหาที่ผู้ใช้ส่งมาเทียบกับรายการสีขาวที่ปลอดภัยเพื่อป้องกันการโจมตี XSS

  • Tidy - แสดงผล HTML ที่เป็นระเบียบเรียบร้อย

  • Handles invalid data - jsoup สามารถจัดการแท็กที่ไม่ปิดแท็กโดยนัยและสามารถสร้างโครงสร้างเอกสารได้อย่างน่าเชื่อถือ

การตั้งค่าสภาพแวดล้อมท้องถิ่น

JUnit เป็นเฟรมเวิร์กสำหรับ Java ดังนั้นข้อกำหนดแรกสุดคือต้องติดตั้ง JDK ในเครื่องของคุณ

ความต้องการของระบบ

JDK 1.5 ขึ้นไป
หน่วยความจำ ไม่มีข้อกำหนดขั้นต่ำ
พื้นที่ดิสก์ ไม่มีข้อกำหนดขั้นต่ำ
ระบบปฏิบัติการ ไม่มีข้อกำหนดขั้นต่ำ

ขั้นตอนที่ 1: ตรวจสอบการติดตั้ง Java ในเครื่องของคุณ

ก่อนอื่นให้เปิดคอนโซลและดำเนินการคำสั่ง java ตามระบบปฏิบัติการที่คุณกำลังทำงานอยู่

ระบบปฏิบัติการ งาน คำสั่ง
Windows เปิด Command Console c: \> java - เวอร์ชัน
ลินุกซ์ เปิด Command Terminal $ java - รุ่น
Mac เปิด Terminal เครื่อง: <joseph $ java -version

มาตรวจสอบผลลัพธ์สำหรับระบบปฏิบัติการทั้งหมด -

ระบบปฏิบัติการ เอาต์พุต
Windows

เวอร์ชัน java "1.6.0_21"

Java (TM) SE Runtime Environment (สร้าง 1.6.0_21-b07)

Java HotSpot (TM) Client VM (build 17.0-b17, โหมดผสม, การแชร์)

ลินุกซ์

เวอร์ชัน java "1.6.0_21"

Java (TM) SE Runtime Environment (สร้าง 1.6.0_21-b07)

Java HotSpot (TM) Client VM (build 17.0-b17, โหมดผสม, การแชร์)

Mac

เวอร์ชัน java "1.6.0_21"

Java (TM) SE Runtime Environment (สร้าง 1.6.0_21-b07)

Java HotSpot (TM) 64-Bit Server VM (build 17.0-b17, โหมดผสม, การแชร์)

หากคุณไม่ได้ติดตั้ง Java ในระบบของคุณให้ดาวน์โหลด Java Software Development Kit (SDK) จากลิงค์ต่อไปนี้ https://www.oracle.com. เราถือว่า Java 1.6.0_21 เป็นเวอร์ชันที่ติดตั้งสำหรับบทช่วยสอนนี้

ขั้นตอนที่ 2: ตั้งค่าสภาพแวดล้อม JAVA

ตั้งค่า JAVA_HOMEตัวแปรสภาพแวดล้อมเพื่อชี้ไปยังตำแหน่งไดเร็กทอรีฐานที่ติดตั้ง Java บนเครื่องของคุณ ตัวอย่างเช่น.

ระบบปฏิบัติการ เอาต์พุต
Windows ตั้งค่าตัวแปรสภาพแวดล้อม JAVA_HOME เป็น C: \ Program Files \ Java \ jdk1.6.0_21
ลินุกซ์ ส่งออก JAVA_HOME = / usr / local / java-current
Mac ส่งออก JAVA_HOME = / Library / Java / Home

ผนวกตำแหน่งคอมไพเลอร์ Java เข้ากับ System Path

ระบบปฏิบัติการ เอาต์พุต
Windows ต่อท้ายสตริง C:\Program Files\Java\jdk1.6.0_21\bin ในตอนท้ายของตัวแปรระบบ Path.
ลินุกซ์ ส่งออก PATH = $ PATH: $ JAVA_HOME / bin /
Mac ไม่จำเป็นต้องใช้

ตรวจสอบการติดตั้ง Java โดยใช้คำสั่ง java -version ตามที่อธิบายไว้ข้างต้น

ขั้นตอนที่ 3: ดาวน์โหลด jsoup Archive

ดาวน์โหลดเวอร์ชันล่าสุดของไฟล์ jsoup ขวดจากMaven Repository ในขณะที่เขียนบทช่วยสอนนี้เราได้ดาวน์โหลด jsoup-1.8.3.jar และคัดลอกลงในโฟลเดอร์ C: \> jsoup

ระบบปฏิบัติการ ชื่อที่เก็บถาวร
Windows jsoup-1.8.3.jar
ลินุกซ์ jsoup-1.8.3.jar
Mac jsoup-1.8.3.jar

ขั้นตอนที่ 4: ตั้งค่าสภาพแวดล้อม jsoup

ตั้งค่า JSOUP_HOMEตัวแปรสภาพแวดล้อมเพื่อชี้ไปยังตำแหน่งไดเร็กทอรีฐานที่เก็บ jsoup jar ไว้ในเครื่องของคุณ สมมติว่าเราเก็บ jsoup-1.8.3.jar ไว้ในโฟลเดอร์ JSOUP

ซีเนียร์ No ระบบปฏิบัติการและคำอธิบาย
1

Windows

ตั้งค่าตัวแปรสภาพแวดล้อม JSOUP_HOME เป็น C: \ JSOUP

2

Linux

ส่งออก JSOUP_HOME = / usr / local / JSOUP

3

Mac

ส่งออก JSOUP_HOME = / Library / JSOUP

ขั้นตอนที่ 5: ตั้งค่าตัวแปร CLASSPATH

ตั้งค่า CLASSPATH ตัวแปรสภาพแวดล้อมเพื่อชี้ไปที่ตำแหน่ง jar JSOUP

ซีเนียร์ No ระบบปฏิบัติการและคำอธิบาย
1

Windows

ตั้งค่าตัวแปรสภาพแวดล้อม CLASSPATH เป็น% CLASSPATH%;% JSOUP_HOME% \ jsoup-1.8.3.jar; .;

2

Linux

ส่งออก CLASSPATH = $ CLASSPATH: $ JSOUP_HOME / jsoup-1.8.3.jar:.

3

Mac

ส่งออก CLASSPATH = $ CLASSPATH: $ JSOUP_HOME / jsoup-1.8.3.jar:.

ตัวอย่างต่อไปนี้จะแสดงการแยกสตริง HTML ลงในวัตถุเอกสาร

ไวยากรณ์

Document document = Jsoup.parse(html);

ที่ไหน

  • document - วัตถุเอกสารแสดงถึง HTML DOM

  • Jsoup - คลาสหลักเพื่อแยกวิเคราะห์สตริง HTML ที่กำหนด

  • html - สตริง HTML

คำอธิบาย

วิธีการแยกวิเคราะห์ (String html) จะแยกวิเคราะห์ HTML ที่ป้อนเข้าในเอกสารใหม่ อ็อบเจ็กต์เอกสารนี้สามารถใช้เพื่อสำรวจและรับรายละเอียดของ html dom

ตัวอย่าง

สร้างโปรแกรม java ต่อไปนี้โดยใช้โปรแกรมแก้ไขที่คุณเลือกโดยพูดว่า 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());
      }
   }
}

ตรวจสอบผลลัพธ์

รวบรวมคลาสโดยใช้ javac คอมไพเลอร์ดังนี้:

C:\jsoup>javac JsoupTester.java

ตอนนี้รัน JsoupTester เพื่อดูผลลัพธ์

C:\jsoup>java JsoupTester

ดูผลลัพธ์

Sample Title
Sample Content

ตัวอย่างต่อไปนี้จะแสดงการแยกวิเคราะห์ HTML fragement String ในออบเจ็กต์ Element ในรูปแบบ html

ไวยากรณ์

Document document = Jsoup.parseBodyFragment(html);
Element body = document.body();

ที่ไหน

  • document - วัตถุเอกสารแสดงถึง HTML DOM

  • Jsoup - คลาสหลักเพื่อแยกวิเคราะห์สตริง HTML ที่กำหนด

  • html - สตริงส่วน HTML

  • body - แสดงถึงองค์ประกอบย่อยขององค์ประกอบเนื้อหาของเอกสารและเทียบเท่ากับ document.getElementsByTag ("body")

คำอธิบาย

เมธอด parseBodyFragment (String html) จะแยกวิเคราะห์อินพุต HTML ลงในเอกสารใหม่ อ็อบเจ็กต์เอกสารนี้สามารถใช้เพื่อสำรวจและรับรายละเอียดของส่วนเนื้อหา html

ตัวอย่าง

สร้างโปรแกรม java ต่อไปนี้โดยใช้โปรแกรมแก้ไขที่คุณเลือกโดยพูดว่า 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());
      }
   }
}

ตรวจสอบผลลัพธ์

รวบรวมคลาสโดยใช้ javac คอมไพเลอร์ดังนี้:

C:\jsoup>javac JsoupTester.java

ตอนนี้รัน JsoupTester เพื่อดูผลลัพธ์

C:\jsoup>java JsoupTester

ดูผลลัพธ์

Sample Content

ตัวอย่างต่อไปนี้จะแสดงการดึง HTML จากเว็บโดยใช้ url จากนั้นค้นหาข้อมูล

ไวยากรณ์

String url = "http://www.google.com";
Document document = Jsoup.connect(url).get();

ที่ไหน

  • document - วัตถุเอกสารแสดงถึง HTML DOM

  • Jsoup - คลาสหลักในการเชื่อมต่อ url และรับ HTML String

  • url - url ของหน้า html ที่จะโหลด

คำอธิบาย

เมธอด connect (url) ทำการเชื่อมต่อกับ url และ get () method ส่งคืน html ของ url ที่ร้องขอ

ตัวอย่าง

สร้างโปรแกรม java ต่อไปนี้โดยใช้โปรแกรมแก้ไขที่คุณเลือกโดยพูดว่า 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());
   }
}

ตรวจสอบผลลัพธ์

รวบรวมคลาสโดยใช้ javac คอมไพเลอร์ดังนี้:

C:\jsoup>javac JsoupTester.java

ตอนนี้รัน JsoupTester เพื่อดูผลลัพธ์

C:\jsoup>java JsoupTester

ดูผลลัพธ์

Google

ตัวอย่างต่อไปนี้จะแสดงการดึง HTML จากดิสก์โดยใช้ไฟล์จากนั้นค้นหาข้อมูล

ไวยากรณ์

String url = "http://www.google.com";
Document document = Jsoup.connect(url).get();

ที่ไหน

  • document - วัตถุเอกสารแสดงถึง HTML DOM

  • Jsoup - คลาสหลักในการเชื่อมต่อ url และรับ HTML String

  • url - url ของหน้า html ที่จะโหลด

คำอธิบาย

เมธอด connect (url) ทำการเชื่อมต่อกับ url และ get () method ส่งคืน html ของ url ที่ร้องขอ

ตัวอย่าง

สร้างโปรแกรม java ต่อไปนี้โดยใช้โปรแกรมแก้ไขที่คุณเลือกโดยพูดว่า 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

สร้างไฟล์ test.htm ต่อไปนี้ในโฟลเดอร์ C: \ jsoup

<html>
   <head>
      <title>Sample Title</title>
   </head>
   <body>
      <p>Sample Content</p>
   </body>
</html>

ตรวจสอบผลลัพธ์

รวบรวมคลาสโดยใช้ javac คอมไพเลอร์ดังนี้:

C:\jsoup>javac JsoupTester.java

ตอนนี้รัน JsoupTester เพื่อดูผลลัพธ์

C:\jsoup>java JsoupTester

ดูผลลัพธ์

Sample Title

ตัวอย่างต่อไปนี้จะแสดงการใช้ DOM เช่นวิธีการหลังจากแยกวิเคราะห์สตริง HTML ลงในวัตถุเอกสาร

ไวยากรณ์

Document document = Jsoup.parse(html);
Element sampleDiv = document.getElementById("sampleDiv");
Elements links = sampleDiv.getElementsByTag("a");

ที่ไหน

  • document - วัตถุเอกสารแสดงถึง HTML DOM

  • Jsoup - คลาสหลักเพื่อแยกวิเคราะห์สตริง HTML ที่กำหนด

  • html - สตริง HTML

  • sampleDiv - ออบเจ็กต์องค์ประกอบแสดงถึงองค์ประกอบโหนด html ที่ระบุโดย id "sampleDiv"

  • links - ออบเจ็กต์ Elements แสดงถึงองค์ประกอบโหนดหลายรายการที่ระบุโดยแท็ก "a"

คำอธิบาย

วิธีการแยกวิเคราะห์ (String html) จะแยกวิเคราะห์ HTML ที่ป้อนเข้าในเอกสารใหม่ อ็อบเจ็กต์เอกสารนี้สามารถใช้เพื่อสำรวจและรับรายละเอียดของ html dom

ตัวอย่าง

สร้างโปรแกรม java ต่อไปนี้โดยใช้โปรแกรมแก้ไขที่คุณเลือกโดยพูดว่า 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());
      }
   }
}

ตรวจสอบผลลัพธ์

รวบรวมคลาสโดยใช้ javac คอมไพเลอร์ดังนี้:

C:\jsoup>javac JsoupTester.java

ตอนนี้รัน JsoupTester เพื่อดูผลลัพธ์

C:\jsoup>java JsoupTester

ดูผลลัพธ์

Sample Title
Sample Content
Data: Google
Href: www.google.com
Text: Google

ตัวอย่างต่อไปนี้จะแสดงการใช้วิธีการเลือกหลังจากแยกวิเคราะห์สตริง HTML ลงในวัตถุเอกสาร jsoup รองรับตัวเลือกที่คล้ายกับ CSS Selectors

ไวยากรณ์

Document document = Jsoup.parse(html);
Element sampleDiv = document.getElementById("sampleDiv");
Elements links = sampleDiv.getElementsByTag("a");

ที่ไหน

  • document - วัตถุเอกสารแสดงถึง HTML DOM

  • Jsoup - คลาสหลักเพื่อแยกวิเคราะห์สตริง HTML ที่กำหนด

  • html - สตริง HTML

  • sampleDiv - ออบเจ็กต์องค์ประกอบแสดงถึงองค์ประกอบโหนด html ที่ระบุโดย id "sampleDiv"

  • links - ออบเจ็กต์ Elements แสดงถึงองค์ประกอบโหนดหลายรายการที่ระบุโดยแท็ก "a"

คำอธิบาย

เมธอด document.select (นิพจน์) จะแยกวิเคราะห์นิพจน์ตัวเลือก CSS ที่กำหนดเพื่อเลือกองค์ประกอบ html dom

ตัวอย่าง

สร้างโปรแกรม java ต่อไปนี้โดยใช้โปรแกรมแก้ไขที่คุณเลือกโดยพูดว่า 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());
      }
   }
}

ตรวจสอบผลลัพธ์

รวบรวมคลาสโดยใช้ javac คอมไพเลอร์ดังนี้:

C:\jsoup>javac JsoupTester.java

ตอนนี้รัน JsoupTester เพื่อดูผลลัพธ์

C:\jsoup>java JsoupTester

ดูผลลัพธ์

Href: www.google.com
Text: Google
Name: google
Id: imageDiv
Text: Sample

ตัวอย่างต่อไปนี้จะแสดงการใช้วิธีการรับแอตทริบิวต์ขององค์ประกอบ dom หลังจากแยกวิเคราะห์สตริง HTML ลงในวัตถุเอกสาร

ไวยากรณ์

Document document = Jsoup.parse(html);
Element link = document.select("a").first();
System.out.println("Href: " + link.attr("href"));

ที่ไหน

  • document - วัตถุเอกสารแสดงถึง HTML DOM

  • Jsoup - คลาสหลักเพื่อแยกวิเคราะห์สตริง HTML ที่กำหนด

  • html - สตริง HTML

  • link - ออบเจ็กต์องค์ประกอบแสดงถึงองค์ประกอบโหนด html ที่แสดงแท็กจุดยึด

  • link.attr() - เมธอด attr (แอตทริบิวต์) ดึงแอตทริบิวต์องค์ประกอบ

คำอธิบาย

ออบเจ็กต์องค์ประกอบเป็นตัวแทนของ dom elment และจัดเตรียมวิธีการต่างๆเพื่อรับแอตทริบิวต์ขององค์ประกอบ dom

ตัวอย่าง

สร้างโปรแกรม java ต่อไปนี้โดยใช้โปรแกรมแก้ไขที่คุณเลือกโดยพูดว่า 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"));
   }
}

ตรวจสอบผลลัพธ์

รวบรวมคลาสโดยใช้ javac คอมไพเลอร์ดังนี้:

C:\jsoup>javac JsoupTester.java

ตอนนี้รัน JsoupTester เพื่อดูผลลัพธ์

C:\jsoup>java JsoupTester

ดูผลลัพธ์

Href: www.google.com

ตัวอย่างต่อไปนี้จะแสดงการใช้วิธีการรับข้อความหลังจากแยกวิเคราะห์สตริง HTML ลงในวัตถุเอกสาร

ไวยากรณ์

Document document = Jsoup.parse(html);
Element link = document.select("a").first();     
System.out.println("Text: " + link.text());

ที่ไหน

  • document - วัตถุเอกสารแสดงถึง HTML DOM

  • Jsoup - คลาสหลักเพื่อแยกวิเคราะห์สตริง HTML ที่กำหนด

  • html - สตริง HTML

  • link - ออบเจ็กต์องค์ประกอบแสดงถึงองค์ประกอบโหนด html ที่แสดงแท็กจุดยึด

  • link.text() - text () วิธีการดึงข้อความองค์ประกอบ

คำอธิบาย

ออบเจ็กต์องค์ประกอบเป็นตัวแทนของ dom elment และจัดเตรียมวิธีการต่างๆเพื่อรับข้อความขององค์ประกอบ dom

ตัวอย่าง

สร้างโปรแกรม java ต่อไปนี้โดยใช้โปรแกรมแก้ไขที่คุณเลือกโดยพูดว่า 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());
   }
}

ตรวจสอบผลลัพธ์

รวบรวมคลาสโดยใช้ javac คอมไพเลอร์ดังนี้:

C:\jsoup>javac JsoupTester.java

ตอนนี้รัน JsoupTester เพื่อดูผลลัพธ์

C:\jsoup>java JsoupTester

ดูผลลัพธ์

Text: Google

ตัวอย่างต่อไปนี้จะแสดงการใช้เมธอดเพื่อรับ html ภายในและ html ภายนอกหลังจากแยกวิเคราะห์สตริง HTML ลงในอ็อบเจ็กต์เอกสาร

ไวยากรณ์

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());

ที่ไหน

  • document - วัตถุเอกสารแสดงถึง HTML DOM

  • Jsoup - คลาสหลักเพื่อแยกวิเคราะห์สตริง HTML ที่กำหนด

  • html - สตริง HTML

  • link - ออบเจ็กต์องค์ประกอบแสดงถึงองค์ประกอบโหนด html ที่แสดงแท็กจุดยึด

  • link.outerHtml() - outerHtml () วิธีการดึงองค์ประกอบที่สมบูรณ์ html

  • link.html() - html () วิธีการดึงข้อมูล html ภายในองค์ประกอบ

คำอธิบาย

ออบเจ็กต์องค์ประกอบแสดงถึง dom elment และจัดเตรียมวิธีการต่างๆเพื่อรับ html ขององค์ประกอบ dom

ตัวอย่าง

สร้างโปรแกรม java ต่อไปนี้โดยใช้โปรแกรมแก้ไขที่คุณเลือกโดยพูดว่า 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());
   }
}

ตรวจสอบผลลัพธ์

รวบรวมคลาสโดยใช้ javac คอมไพเลอร์ดังนี้:

C:\jsoup>javac JsoupTester.java

ตอนนี้รัน JsoupTester เพื่อดูผลลัพธ์

C:\jsoup>java JsoupTester

ดูผลลัพธ์

Outer HTML: <a href="www.google.com">Google</a>
Inner HTML: Google

ตัวอย่างต่อไปนี้จะแสดงวิธีการที่สามารถระบุ URL แบบสัมพัทธ์และแบบสัมบูรณ์ที่มีอยู่ในหน้า html

ไวยากรณ์

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"));

ที่ไหน

  • document - วัตถุเอกสารแสดงถึง HTML DOM

  • Jsoup - คลาสหลักเพื่อเชื่อมต่อกับ url และรับเนื้อหา html

  • link - ออบเจ็กต์องค์ประกอบแสดงถึงองค์ประกอบโหนด html ที่แสดงแท็กจุดยึด

  • link.attr("href")- ระบุค่า href ที่มีอยู่ในแท็กจุดยึด อาจเป็นญาติหรือสัมบูรณ์

  • link.attr("abs:href") - ระบุ url ที่แน่นอนหลังจากแก้ไขกับ URI ฐานของเอกสาร

  • link.absUrl("href") - ระบุ url ที่แน่นอนหลังจากแก้ไขกับ URI ฐานของเอกสาร

คำอธิบาย

ออบเจ็กต์องค์ประกอบแสดงถึง dom elment และจัดเตรียมเมธอดในการรับ URL แบบสัมพัทธ์และ URL ที่สมบูรณ์ที่แสดงในเพจ html

ตัวอย่าง

สร้างโปรแกรม java ต่อไปนี้โดยใช้โปรแกรมแก้ไขที่คุณเลือกโดยพูดว่า 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"));
   }
}

ตรวจสอบผลลัพธ์

รวบรวมคลาสโดยใช้ javac คอมไพเลอร์ดังนี้:

C:\jsoup>javac JsoupTester.java

ตอนนี้รัน JsoupTester เพื่อดูผลลัพธ์

C:\jsoup>java JsoupTester

ดูผลลัพธ์

Relative Link: index.htm
Absolute Link: https://www.tutorialspoint.com/index.htm
Absolute Link: https://www.tutorialspoint.com/index.htm

ตัวอย่างต่อไปนี้จะแสดงการใช้วิธีการตั้งค่าแอตทริบิวต์ขององค์ประกอบ dom การอัปเดตจำนวนมากและวิธีการเพิ่ม / ลบคลาสหลังจากแยกวิเคราะห์สตริง HTML ลงในวัตถุเอกสาร

ไวยากรณ์

Document document = Jsoup.parse(html);
Element link = document.select("a").first();         
link.attr("href","www.yahoo.com");     
link.addClass("header"); 
link.removeClass("header");

ที่ไหน

  • document - วัตถุเอกสารแสดงถึง HTML DOM

  • Jsoup - คลาสหลักเพื่อแยกวิเคราะห์สตริง HTML ที่กำหนด

  • html - สตริง HTML

  • link - ออบเจ็กต์องค์ประกอบแสดงถึงองค์ประกอบโหนด html ที่แสดงแท็กจุดยึด

  • link.attr() - attr (แอตทริบิวต์ค่า) วิธีการตั้งค่าแอตทริบิวต์องค์ประกอบที่สอดคล้องกันค่า

  • link.addClass() - addClass (คลาส) วิธีการเพิ่มคลาสภายใต้แอตทริบิวต์คลาส

  • link.removeClass() - วิธี removeClass (คลาส) ลบคลาสภายใต้แอตทริบิวต์คลาส

คำอธิบาย

ออบเจ็กต์องค์ประกอบเป็นตัวแทนของ dom elment และจัดเตรียมวิธีการต่างๆเพื่อรับแอตทริบิวต์ขององค์ประกอบ dom

ตัวอย่าง

สร้างโปรแกรม java ต่อไปนี้โดยใช้โปรแกรมแก้ไขที่คุณเลือกโดยพูดว่า 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());
   }
}

ตรวจสอบผลลัพธ์

รวบรวมคลาสโดยใช้ javac คอมไพเลอร์ดังนี้:

C:\jsoup>javac JsoupTester.java

ตอนนี้รัน JsoupTester เพื่อดูผลลัพธ์

C:\jsoup>java JsoupTester

ดูผลลัพธ์

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>

ตัวอย่างต่อไปนี้จะแสดงการใช้วิธีการตั้งค่าต่อท้ายหรือต่อท้าย html กับองค์ประกอบ dom หลังจากแยกวิเคราะห์สตริง HTML ลงในวัตถุเอกสาร

ไวยากรณ์

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>");

ที่ไหน

  • document - วัตถุเอกสารแสดงถึง HTML DOM

  • Jsoup - คลาสหลักเพื่อแยกวิเคราะห์สตริง HTML ที่กำหนด

  • html - สตริง HTML

  • div - ออบเจ็กต์องค์ประกอบแสดงถึงองค์ประกอบโหนด html ที่แสดงแท็กจุดยึด

  • div.html() - วิธีการ html (เนื้อหา) แทนที่ html ภายนอกขององค์ประกอบด้วยค่าที่สอดคล้องกัน

  • div.prepend() - วิธีการเพิ่ม (เนื้อหา) เพิ่มเนื้อหาก่อน html ด้านนอก

  • div.append() - วิธีผนวก (เนื้อหา) เพิ่มเนื้อหาหลัง html ด้านนอก

คำอธิบาย

ออบเจ็กต์องค์ประกอบเป็นตัวแทนของ dom elment และมีวิธีการต่างๆในการตั้งค่านำหน้าหรือต่อท้าย html เข้ากับองค์ประกอบ dom

ตัวอย่าง

สร้างโปรแกรม java ต่อไปนี้โดยใช้โปรแกรมแก้ไขที่คุณเลือกโดยพูดว่า 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());          
   }
}

ตรวจสอบผลลัพธ์

รวบรวมคลาสโดยใช้ javac คอมไพเลอร์ดังนี้:

C:\jsoup>javac JsoupTester.java

ตอนนี้รัน JsoupTester เพื่อดูผลลัพธ์

C:\jsoup>java JsoupTester

ดูผลลัพธ์

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>

ตัวอย่างต่อไปนี้จะแสดงการใช้วิธีการตั้งค่านำหน้าหรือต่อท้ายข้อความไปยังองค์ประกอบ dom หลังจากแยกวิเคราะห์สตริง HTML ลงในวัตถุเอกสาร

ไวยากรณ์

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.");

ที่ไหน

  • document - วัตถุเอกสารแสดงถึง HTML DOM

  • Jsoup - คลาสหลักเพื่อแยกวิเคราะห์สตริง HTML ที่กำหนด

  • html - สตริง HTML

  • div - ออบเจ็กต์องค์ประกอบแสดงถึงองค์ประกอบโหนด html ที่แสดงแท็กจุดยึด

  • div.text() - วิธีข้อความ (เนื้อหา) แทนที่เนื้อหาขององค์ประกอบด้วยค่าที่สอดคล้องกัน

  • div.prepend() - วิธีการเพิ่ม (เนื้อหา) เพิ่มเนื้อหาก่อน html ด้านนอก

  • div.append() - วิธีผนวก (เนื้อหา) เพิ่มเนื้อหาหลัง html ด้านนอก

คำอธิบาย

ออบเจ็กต์องค์ประกอบเป็นตัวแทนของ dom elment และมีวิธีการต่างๆในการตั้งค่านำหน้าหรือต่อท้าย html เข้ากับองค์ประกอบ dom

ตัวอย่าง

สร้างโปรแกรม java ต่อไปนี้โดยใช้โปรแกรมแก้ไขที่คุณเลือกโดยพูดว่า 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());
   }
}

ตรวจสอบผลลัพธ์

รวบรวมคลาสโดยใช้ javac คอมไพเลอร์ดังนี้:

C:\jsoup>javac JsoupTester.java

ตอนนี้รัน JsoupTester เพื่อดูผลลัพธ์

C:\jsoup>java JsoupTester

ดูผลลัพธ์

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>

ตัวอย่างต่อไปนี้จะแสดงการป้องกันการโจมตี XSS หรือการโจมตีด้วยสคริปต์ข้ามไซต์

ไวยากรณ์

String safeHtml =  Jsoup.clean(html, Whitelist.basic());

ที่ไหน

  • Jsoup - คลาสหลักเพื่อแยกวิเคราะห์สตริง HTML ที่กำหนด

  • html - สตริง HTML เริ่มต้น

  • safeHtml - ล้าง HTML

  • Whitelist - ออบเจ็กต์เพื่อจัดเตรียมการกำหนดค่าเริ่มต้นเพื่อป้องกัน html

  • clean() - ทำความสะอาด html โดยใช้ Whitelist

คำอธิบาย

วัตถุ Jsoup ล้าง html โดยใช้การกำหนดค่ารายการที่อนุญาต

ตัวอย่าง

สร้างโปรแกรม java ต่อไปนี้โดยใช้โปรแกรมแก้ไขที่คุณเลือกโดยพูดว่า 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);
   }
}

ตรวจสอบผลลัพธ์

รวบรวมคลาสโดยใช้ javac คอมไพเลอร์ดังนี้:

C:\jsoup>javac JsoupTester.java

ตอนนี้รัน JsoupTester เพื่อดูผลลัพธ์

C:\jsoup>java JsoupTester

ดูผลลัพธ์

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>