ดึงข้อมูลและทรัพยากรจาก HTML

Aspose.HTML for Java โหลด HTML จากไฟล์ URL สตริง หรือสตรีมลงใน HTMLDocument แอปพลิเคชัน Java จึงสามารถตรวจสอบ DOM เลือกองค์ประกอบ อ่านข้อความและแอตทริบิวต์ แปลง URL สัมพัทธ์เป็น URL แบบสัมบูรณ์ และบันทึกค่าที่ต้องการหรือทรัพยากรที่เชื่อมโยงไว้ได้

ใช้เมธอด DOM ตัวเลือก CSS หรือนิพจน์ XPath เมื่อข้อมูลที่ต้องการเป็นส่วนหนึ่งของโครงสร้างเอกสาร หากองค์ประกอบอ้างอิงรูปภาพ สไตล์ชีต ไฟล์ SVG หรือทรัพยากรอื่น ให้ใช้ URL แบบสัมบูรณ์ที่ได้และบริการเครือข่ายเพื่อดาวน์โหลดข้อมูลไบต์ วิธีนี้แยกการวิเคราะห์ HTML ออกจากการเรียกทรัพยากร และช่วยให้ตรรกะการดึงข้อมูลมุ่งเน้นเฉพาะข้อมูลที่แอปพลิเคชันต้องใช้


เลือกงานดึงข้อมูลด้วย Java

เลือกตัวอย่างที่ตรงกับประเภทเนื้อหาหรือทรัพยากรที่ต้องการรวบรวม

ดึงรูปภาพจากเว็บไซต์

ค้นหาองค์ประกอบรูปภาพ แปลง URL ต้นทางแบบสัมพัทธ์เป็น URL แบบสัมบูรณ์ และบันทึกไฟล์รูปภาพที่อ้างอิง

ดึง SVG จากเว็บไซต์

บันทึกมาร์กอัป SVG แบบอินไลน์ และดาวน์โหลดทรัพยากร SVG ภายนอกที่หน้า HTML อ้างอิง

ดาวน์โหลดไฟล์จาก URL

ส่งคำขอไปยัง URL ของทรัพยากร ตรวจสอบการตอบกลับ และเขียนข้อมูลไบต์ที่ได้รับลงในไฟล์ภายในเครื่อง


ดึงลิงก์จาก HTML ด้วย Java

ตัวอย่างนี้โหลดหน้า HTML อ่านแอตทริบิวต์ href ของแต่ละลิงก์ แปลงการอ้างอิงสัมพัทธ์เป็น URL แบบสัมบูรณ์โดยใช้ URL ของเอกสาร และเขียนลิงก์ HTTP และ HTTPS ที่ไม่ซ้ำกันลงใน output/links.txt รูปแบบการเลือกเดียวกันนี้สามารถปรับใช้กับข้อความ เมทาดาทา ค่าฟอร์ม หรือแอตทริบิวต์ของทรัพยากรได้

ดึงลิงก์จาก HTML ด้วย Java

Path outputPath = Paths.get("output", "links.txt");
Files.createDirectories(outputPath.getParent());

try (HTMLDocument document = new HTMLDocument("https://docs.aspose.com/html/java/")) {
    HTMLCollection anchors = document.getElementsByTagName("a");
    Set<String> links = new LinkedHashSet<>();
    Iterator<Element> iterator = anchors.iterator();

    while (iterator.hasNext()) {
        Element anchor = iterator.next();
        String href = anchor.getAttribute("href");
        if (href.isEmpty()) {
            continue;
        }

        Url linkUrl = new Url(href, document.getBaseURI());
        String protocol = linkUrl.getProtocol();
        if ("http:".equals(protocol) || "https:".equals(protocol)) {
            links.add(linkUrl.getHref());
        }
    }

    Files.write(outputPath, links, StandardCharsets.UTF_8);
}

ขั้นตอนการดึงลิงก์จาก HTML

  1. โหลดแหล่งข้อมูลด้วยคลาส HTMLDocument
  2. เลือกองค์ประกอบลิงก์ด้วย getElementsByTagName("a")
  3. อ่านแอตทริบิวต์ href แต่ละรายการ และข้ามค่าที่ว่าง
  4. แปลงการอ้างอิงสัมพัทธ์เป็น URL แบบสัมบูรณ์ด้วยคลาส Url และ URI ฐานของเอกสาร
  5. เก็บเฉพาะลิงก์ HTTP และ HTTPS ตัดรายการที่ซ้ำกัน และบันทึกคอลเลกชันลงในไฟล์ข้อความ

ค้นหาข้อมูล HTML ด้วย DOM ตัวเลือก CSS หรือ XPath

เลือกวิธีการที่เหมาะกับโครงสร้างของเอกสารต้นทาง:

  • คอลเลกชัน DOM – ใช้ getElementsByTagName() เมื่อต้องการองค์ประกอบทั้งหมดที่มีชื่อแท็กที่ทราบอยู่แล้ว
  • ตัวเลือก CSS – ใช้ querySelector() สำหรับผลลัพธ์แรก หรือ querySelectorAll() สำหรับองค์ประกอบทั้งหมดที่ตรงกับตัวเลือก CSS
  • XPath – ใช้นิพจน์ XPath เมื่อการเลือกขึ้นอยู่กับลำดับชั้น แอตทริบิวต์ หรือเงื่อนไขข้อความที่เขียนด้วยตัวเลือก CSS ได้ยาก
  • URL ของทรัพยากร – อ่านแอตทริบิวต์ เช่น src หรือ href แปลงเป็น URL แบบสัมบูรณ์โดยใช้ URI ฐานของเอกสาร และส่งคำขอเฉพาะไฟล์ที่แอปพลิเคชันต้องใช้

ดูตัวอย่าง DOM ตัวเลือก CSS และ XPath ได้ที่ HTML Navigation หรือเปิดเอกสาร Data Extraction เพื่อดูตัวอย่างที่เน้นการทำงานกับทรัพยากร


คำถามที่พบบ่อยเกี่ยวกับการดึงข้อมูล HTML

1. Aspose.HTML for Java สามารถดึงเฉพาะข้อมูลที่ต้องการโดยไม่บันทึกทั้งหน้าได้หรือไม่?

ได้ โหลดแหล่งข้อมูลลงใน HTMLDocument เลือกเฉพาะโหนดที่ต้องการ แล้วจัดเก็บข้อความ แอตทริบิวต์ หรือทรัพยากรที่อ้างอิง แอปพลิเคชันไม่จำเป็นต้องบันทึกสำเนาของทั้งหน้า

2. จะดึงเฉพาะองค์ประกอบ HTML ที่ต้องการด้วย Java ได้อย่างไร?

ใช้ getElementsByTagName() สำหรับแท็กที่ทราบ ใช้ querySelector() หรือ querySelectorAll() สำหรับตัวเลือก CSS หรือใช้ XPath เมื่อการเลือกขึ้นอยู่กับลำดับชั้นของเอกสาร แอตทริบิวต์ หรือเงื่อนไขข้อความ

3. Aspose.HTML for Java สามารถดึงแถวและเซลล์จากตาราง HTML ได้หรือไม่?

ได้ เลือกองค์ประกอบ table, tr, th และ td ผ่าน DOM แล้วแมปข้อความและแอตทริบิวต์ไปยังโครงสร้างข้อมูลที่แอปพลิเคชัน Java ต้องการ

4. Aspose.HTML for Java ใช้งานฟรีสำหรับการดึงข้อมูลหรือไม่?

Aspose.HTML for Java เป็นไลบรารีเชิงพาณิชย์ คุณสามารถดาวน์โหลด รุ่นทดลองใช้ และขอ ใบอนุญาตชั่วคราว เพื่อทดสอบการดึงข้อมูลโดยไม่มีข้อจำกัดของโหมดทดลองใช้ก่อนซื้อ


ติดตั้ง Aspose.HTML for Java

เพิ่ม Aspose.HTML for Java จากที่เก็บอย่างเป็นทางการของ Aspose แทนที่ ASPOSE_HTML_VERSION ด้วยหมายเลขเวอร์ชันที่ตรงกันจากหน้า รุ่นของ Aspose.HTML for Java จากนั้นโหลดหรือสร้างโครงการใหม่เพื่อให้ระบบแก้ไขการขึ้นต่อกันได้

เพิ่มที่เก็บและการขึ้นต่อกันในโครงการ Maven:

Maven – pom.xml

<repositories>
    <repository>
        <id>AsposeJavaAPI</id>
        <url>https://releases.aspose.com/java/repo/</url>
    </repository>
</repositories>
<dependencies>
    <dependency>
        <groupId>com.aspose</groupId>
        <artifactId>aspose-html</artifactId>
        <version>ASPOSE_HTML_VERSION</version>
    </dependency>
</dependencies>

เพิ่มที่เก็บและการขึ้นต่อกันในโครงการ Gradle:

Gradle – build.gradle

repositories {
    maven {
        url = uri('https://releases.aspose.com/java/repo/')
    }
}
dependencies {
    implementation 'com.aspose:aspose-html:ASPOSE_HTML_VERSION'
}

ใช้ JDK ที่เข้ากันได้กับรุ่นที่เลือก สำหรับการติดตั้ง JAR ด้วยตนเอง Kotlin DSL การอัปเดต และการแก้ไขปัญหาการขึ้นต่อกัน โปรดดู ติดตั้ง Aspose.HTML for Java

งานอื่นที่ใช้ Aspose.HTML for Java

ศึกษาคู่มือ Java สำหรับการสร้าง แปลง รวม และประมวลผลเอกสาร HTML ต่อไป