jsoup: ตัวแยกวิเคราะห์ HTML สำหรับ Java
ดึงข้อมูล ทำความสะอาด และจัดการ HTML ด้วยความง่ายแบบ jQuery ใน Java
jsoup คืออะไร?
jsoup เป็นไลบรารี Java ที่มีน้ำหนักเบาแต่ทรงพลัง ออกแบบมาสำหรับทำงานกับ HTML จริง ให้ API ที่ใช้งานง่ายสำหรับการแยกวิเคราะห์ HTML จาก URL ไฟล์ หรือสตริง การดึงและจัดการข้อมูลโดยใช้การสำรวจ DOM ตัวเลือก CSS และวิธีการ HTML5 ที่ทันสมัย เหมาะสมอย่างยิ่งสำหรับการดึงข้อมูลเว็บ การสกัดข้อมูล และการทำความสะอาด HTML โดย jsoup สามารถจัดการกับมาร์กอัปที่ผิดรูปแบบได้อย่างดี - เหมือนกับที่เบราว์เซอร์ทำ
แตกต่างจากวิธีการใช้ regex โดยตรง jsoup นำเสนอโมเดลวัตถุที่สะอาดด้วยวิธีการที่ได้รับแรงบันดาลใจจาก jQuery ทำให้งานต่างๆ เช่น การส่งฟอร์ม การแก้ไขแอตทริบิวต์ และการสกัดข้อความทำได้ง่ายขึ้น โดยไม่มี dependencies และใช้สัญญาอนุญาต MIT ทำให้เป็นที่นิยมในหมู่นักพัฒนา Java ที่ต้องการการประมวลผล HTML ที่น่าเชื่อถือ
ข้อได้เปรียบหลักของ jsoup:
- การจัดการ HTML จริง: แยกวิเคราะห์ HTML ที่ยุ่งเหยิงได้เหมือนเบราว์เซอร์
- ไวยากรณ์แบบ jQuery: ตัวเลือก CSS ที่คุ้นเคย (เช่น
doc.select("div.content")
) - เหมาะสำหรับการดึงข้อมูล: ติดตามการเปลี่ยนเส้นทาง จัดการคุกกี้ และส่งฟอร์ม
- ข้ามแพลตฟอร์ม: Java บริสุทธิ์โดยไม่มี dependencies แบบเนทีฟ
- ความปลอดภัย: มีการป้องกัน XSS และการทำความสะอาด HTML ในตัว
เหมาะสมอย่างยิ่งสำหรับการขุดข้อมูล การทำให้เว็บเป็นอัตโนมัติ และการวิเคราะห์เนื้อหา
ทำไมควรเลือก jsoup?
- ความเรียบง่าย: API ที่ใช้งานง่ายด้วยการสนับสนุนตัวเลือก CSS
- ความน่าเชื่อถือ: มีการบำรุงรักษาอย่างต่อเนื่องตั้งแต่ปี 2009
- ประสิทธิภาพ: ปรับให้เหมาะกับการสตรีมและเอกสารขนาดใหญ่
- ความยืดหยุ่น: ทำงานกับส่วนย่อย ไฟล์ หรือ URL โดยตรง
- ผลลัพธ์ที่สะอาด: พิมพ์และจัดรูปแบบ HTML ใหม่อย่างสวยงาม
การติดตั้ง
เพิ่ม jsoup ผ่าน Maven หรือ Gradle:
Maven
org.jsoup
jsoup
1.17.2
Gradle
implementation 'org.jsoup:jsoup:1.17.2'
ความต้องการของระบบ: Java 8+
ตัวอย่างโค้ด
กรณีการใช้งานจริงของ jsoup:
ตัวอย่างที่ 1: การแยกวิเคราะห์เอกสารจากสตริง
หากคุณมี HTML ในสตริง Java และต้องการแยกวิเคราะห์เพื่อรับเนื้อหาหรือแก้ไข jsoup สามารถทำได้ด้วยโค้ดเพียงไม่กี่บรรทัด
เมธอด parse(String html, String baseUri)
แปลง HTML อินพุตเป็นเอกสารใหม่ พารามิเตอร์ baseUri
ช่วยแก้ไข URL ที่สัมพันธ์กันให้เป็น URL แบบสัมบูรณ์และควรสอดคล้องกับ URL ที่เอกสารถูกดึงมาจาก หากไม่เกี่ยวข้องหรือหาก HTML มีองค์ประกอบ <base>
คุณสามารถใช้เมธอดที่ง่ายกว่า parse(String html)
แทน
ตัวอย่างที่ 2: การใช้ตัวเลือก CSS เพื่อค้นหาองค์ประกอบ
คุณต้องการค้นหาหรือจัดการองค์ประกอบโดยใช้ตัวเลือก CSS แยกวิเคราะห์และจัดการสตริง HTML โดยตรง:
ตัวอย่างที่ 3: การแก้ไข HTML ขององค์ประกอบ
คุณต้องแก้ไข HTML ขององค์ประกอบ ใช้เมธอด HTML setter ใน Element ดังแสดงในโค้ดตัวอย่างต่อไปนี้
คุณสมบัติขั้นสูง
jsoup รองรับการประมวลผล HTML ระดับมืออาชีพ:
- การจัดการฟอร์ม: ส่งข้อมูล POST:
การส่งฟอร์ม
Connection.Response res = Jsoup.connect("https://example.com/login") .data("username", "user", "password", "pass") .method(Connection.Method.POST) .execute(); Document dashboard = res.parse();
- การสนับสนุนพร็อกซี: ดึงข้อมูลผ่านพร็อกซี:
การกำหนดค่าพร็อกซี
Document doc = Jsoup.connect("https://target.com") .proxy("127.0.0.1", 8080) .get();
- การจัดการ DOM: แก้ไขโครงสร้าง HTML:
การเปลี่ยนแปลง DOM
doc.select("div.ads").remove(); // ลบโฆษณาทั้งหมด doc.select("h1").attr("class", "header"); // เพิ่มคลาส CSS
jsoup vs HTMLUnit
ความแตกต่างหลัก:
- โฟกัส: jsoup แยกวิเคราะห์ HTML แบบคงที่; HTMLUnit จำลองเบราว์เซอร์ (รัน JavaScript)
- ความเร็ว: jsoup เร็วขึ้นสำหรับการแยกวิเคราะห์ HTML แบบบริสุทธิ์
- สไตล์ API: jsoup ใช้ตัวเลือก CSS; HTMLUnit เลียนแบบ Selenium
- กรณีการใช้งาน: jsoup สำหรับการดึงข้อมูล; HTMLUnit สำหรับการทดสอบหน้าแบบไดนามิก
- การพึ่งพา: jsoup ไม่มี; HTMLUnit ต้องการไลบรารีเพิ่มเติม
สรุป
jsoup เป็นชุดเครื่องมือ HTML ที่สมบูรณ์แบบสำหรับนักพัฒนา Java เหมาะสำหรับ:
- การดึงข้อมูลเว็บ: แยกข้อมูลจากเว็บไซต์ใดๆ
- การทำความสะอาดข้อมูล: ทำให้ HTML บริสุทธิ์และเป็นมาตรฐาน
- การวิเคราะห์เนื้อหา: แยกวิเคราะห์ฟีด RSS หรือคลังข้อมูลเว็บ
- การทดสอบ: ตรวจสอบโครงสร้าง HTML ในแอปพลิเคชัน
ด้วยสัญญาอนุญาต MIT และ API ที่ใช้งานง่าย jsoup เป็นตัวเลือกอันดับต้นๆ สำหรับการประมวลผล HTML แบบ Java
สินค้าที่คล้ายกัน
- Apache POI XWPF | โอเพ่นซอร์ส Java API เพื่อสร้างและแก้ไขไฟล์ DOCX
- DocX | โอเพ่นซอร์ส .NET API สำหรับสร้างและแก้ไขไฟล์ DOCX
- Docx4J | โอเพ่นซอร์ส Java API เพื่อสร้างและแก้ไขไฟล์ DOC และ DOCX
- ExcelDataReader | โอเพ่นซอร์ส .NET API สำหรับอ่านเอกสาร XLS, XLSX, CSV และสเปรดชีต
- FileFormat.Cells | ตรวจสอบและอัปเดตไฟล์ Excel ด้วย C# .NET