Java:
การวิเคราะห์ HTML
วิธีการ:
ให้ใช้ Jsoup, ไลบรารีที่มีประโยชน์สำหรับการทำงานกับ HTML ในโลกจริง ขั้นแรก, เพิ่มความขึ้นต่อดังนี้:
<dependency>
<groupId>org.jsoup</groupId>
<artifactId>jsoup</artifactId>
<version>1.15.2</version>
</dependency>
ตอนนี้เรามาสู่ส่วนที่สนุก นี่คือวิธีการดึงชื่อหน้าเว็บและพิมพ์ออกมา:
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
public class HtmlParser {
public static void main(String[] args) throws IOException {
String url = "http://example.com";
Document doc = Jsoup.connect(url).get();
String title = doc.title();
System.out.println("Title: " + title);
}
}
ผลลัพธ์:
Title: Example Domain
เราจะดึงลิงก์ทั้งหมดได้อย่างไร?
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;
// ... ภายใน main หรือวิธีการอื่น
Elements links = doc.select("a[href]");
for (Element link : links) {
System.out.println("Link: " + link.attr("href"));
}
การดำดิ่งลึก
เมื่อก่อน HTML ถูกจัดการด้วยรูปแบบ regex, วิธีการที่มีความผิดพลาดสูงและน่าสยดสยองสำหรับเอกสารที่ซับซ้อน Jsoup เข้ามาในปลายทศวรรษ 2000s, ให้การเข้าถึงแบบ jQuery สำหรับ Java เพื่อการแยกวิเคราะห์, การเดินทางผ่าน, และการจัดการ HTML
Jsoup ไม่ใช่ตัวเลือกเดียวที่มี มี HtmlUnit สำหรับการทดสอบแอปพลิเคชันเว็บแบบเต็มรูปแบบพร้อมการสนับสนุน JavaScript, แต่มันหนักและซับซ้อนกว่า สำหรับงานเบาๆ, Apache Commons Validator เป็นตัวเลือกที่ดีเพื่อการดึงลิงก์เท่านั้น
ภายใต้ฝาครอบ, Jsoup ใช้ DOM parser, ซึ่งทำแบบจำลองทั้งเอกสารในหน่วยความจำเป็นต้นไม้ วิธีนี้ทำให้การเลือกและนำทางโครงสร้าง HTML เป็นเรื่องง่าย แถมยังยืดหยุ่นกับ HTML ที่ไม่เรียบร้อย, แก้ไขปัญหาทันทีเพื่อให้มั่นใจการวิเคราะห์ที่เข้มแข็ง
จำไว้ว่า, เมื่อดึงข้อมูล, ตรวจสอบไฟล์ robots.txt
และข้อกำหนดการให้บริการของเว็บไซต์เสมอ เพื่อหลีกเลี่ยงปัญหาทางกฎหมายหรือการถูกแบน IP
ดูเพิ่มเติม
- Jsoup เอกสารอย่างเป็นทางการ: https://jsoup.org/
- HtmlUnit: http://htmlunit.sourceforge.net/
- Apache Commons Validator: https://commons.apache.org/proper/commons-validator/