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>