แยกตารางจากไฟล์ HTML ด้วย .NET API
Aspose.HTML for .NET
โหลดไฟล์ HTML ลงใน
HTMLDocument
และเปิดให้เข้าถึงตารางผ่าน DOM แอปพลิเคชัน C# สามารถเลือกองค์ประกอบ <table> หนึ่งรายการหรือทั้งหมด อ่าน OuterHTML และสร้างเอกสาร HTML แยกที่มีมาร์กอัปตารางแบบสมบูรณ์
แยกทุกตารางจากไฟล์ HTML ใน C#
ตัวอย่างต่อไปนี้เลือกทุกตารางใน input.html และบันทึกแต่ละตารางเป็นไฟล์ HTML ที่มีหมายเลข URI ฐานของเอกสารต้นฉบับจะถูกส่งไปยังเอกสารผลลัพธ์แต่ละรายการ เพื่อให้ URL ทรัพยากรแบบสัมพัทธ์อ้างอิงจากตำแหน่งเดิมระหว่างการประมวลผล
โค้ด C# สำหรับแยกตาราง HTML
using Aspose.Html;
using Aspose.Html.Dom;
using System;
// Load the source HTML file
using HTMLDocument document = new HTMLDocument("input.html");
int tableNumber = 1;
foreach (Element table in document.QuerySelectorAll("table"))
{
// Save each complete table to a separate HTML file
string outputPath = $"table-{tableNumber}.html";
using HTMLDocument tableDocument = new HTMLDocument(table.OuterHTML, document.BaseURI);
tableDocument.Save(outputPath);
tableNumber++;
}
if (tableNumber == 1)
{
// Report that the selector returned no tables
Console.WriteLine("No tables were found in the HTML document.");
}
ขั้นตอนการแยกตารางจาก HTML
- โหลดไฟล์ต้นฉบับด้วยตัวสร้าง
HTMLDocument - เลือกองค์ประกอบตารางด้วย
QuerySelectorAll("table") - วนซ้ำองค์ประกอบที่คืนมาและอ่าน
OuterHTMLของแต่ละตาราง - สร้าง
HTMLDocumentใหม่จากมาร์กอัปที่แยกได้และ URI ฐานของเอกสารต้นฉบับ - เรียก
Save()พร้อมชื่อไฟล์ผลลัพธ์ที่ไม่ซ้ำกันสำหรับแต่ละตาราง
ตัวเลือกและข้อจำกัดในการแยกตาราง HTML
- เลือกขอบเขตการแยก ใช้
tableเพื่อเลือกทุกตาราง หรือตัวเลือกที่แคบลง เช่น#price-table,.results tableหรือmain tableเพื่อจำกัดผลลัพธ์ - รักษามาร์กอัปของตาราง
OuterHTMLมีองค์ประกอบ<table>ที่เลือก แอตทริบิวต์ แถว เซลล์ และเนื้อหาซ้อนทั้งหมด - รักษาบริบทการอ้างอิงทรัพยากร การส่ง
document.BaseURIช่วยให้ URL แบบสัมพัทธ์ในมาร์กอัปที่แยกได้ถูกตีความเทียบกับเอกสารต้นฉบับระหว่างการประมวลผล - จัดการสไตล์แยกกัน สไตล์แบบอินไลน์และแอตทริบิวต์
styleภายในตารางยังอยู่ในมาร์กอัป แต่กฎใน<head>ของเอกสารต้นฉบับหรือสไตล์ชีตภายนอกจะไม่ถูกคัดลอกไปยังเอกสารที่มีเฉพาะตาราง - แยกมาร์กอัปออกจากการแยกข้อมูล เวิร์กโฟลว์นี้บันทึกองค์ประกอบ
<table>ที่เลือกพร้อมมาร์กอัป หากต้องการรวบรวมค่าเซลล์สำหรับ JSON, CSV หรือรูปแบบอื่น ให้ใช้ แยกข้อมูลตาราง HTML
เอกสารประกอบการแยกตาราง HTML
ดู แยกตาราง HTML ใน C# สำหรับการเลือกตาราง การประมวลผลแถวและเซลล์ การแยกลิงก์ และตัวอย่างผลลัพธ์ ส่วน การแยกข้อมูล ครอบคลุมการนำทาง DOM ตัวเลือก CSS, XPath และเวิร์กโฟลว์การแยกเนื้อหาเว็บเพิ่มเติม
ติดตั้ง Aspose.HTML for .NET
ติดตั้ง Aspose.HTML for .NET จาก NuGet ด้วย .NET CLI:
dotnet add package Aspose.HTML
คุณยังสามารถใช้หน้าต่าง NuGet Package Manager หรือเรียกใช้ Install-Package Aspose.HTML ใน Package Manager Console ได้ ดูรายละเอียดการตั้งค่าใน
คู่มือการติดตั้ง
หรือขอ
ใบอนุญาตชั่วคราว
เพื่อประเมิน API โดยไม่มีข้อจำกัดของเวอร์ชันทดลอง
คำถามที่พบบ่อยเกี่ยวกับการแยกตาราง HTML
1. ฉันสามารถแยกทุกตารางจากไฟล์ HTML ไฟล์เดียวได้หรือไม่?
ได้ QuerySelectorAll("table") คืนทุกตารางที่ตรงกันตามลำดับในเอกสาร วนซ้ำผลลัพธ์และกำหนดชื่อผลลัพธ์ที่ไม่ซ้ำกันเมื่อต้องบันทึกแต่ละตารางแยกกัน
2. จะแยกเฉพาะตาราง HTML ที่ต้องการได้อย่างไร?
ใช้ QuerySelector() กับ ID คลาส หรือตัวเลือกโครงสร้างที่คงที่ เช่น #price-table หรือ main table เมธอดนี้คืนการจับคู่แรกแทนการรวบรวมองค์ประกอบ <table> ทั้งหมด
3. ตาราง HTML ที่แยกออกมายังคงรูปแบบ CSS หรือไม่?
สไตล์แบบอินไลน์และแอตทริบิวต์ style ภายในตารางจะคงอยู่ใน OuterHTML ต้องคัดลอกหรือเชื่อมโยงกฎ CSS จาก <head> เดิมหรือสไตล์ชีตภายนอกแยกต่างหาก หากต้องการให้ไฟล์อิสระมีลักษณะเหมือนเดิม
4. ฉันสามารถแยกข้อมูลตารางเป็น CSV หรือ JSON แทนการบันทึกมาร์กอัป HTML ได้หรือไม่?
ได้ แต่เป็นเวิร์กโฟลว์อีกแบบหนึ่ง วนซ้ำแถว อ่านค่า <th> และ <td> แล้วส่งไปยังตัวเขียน CSV หรือ JSON serializer ดูตัวอย่างฉบับเต็มที่
แยกข้อมูลตาราง HTML
5. ตาราง HTML ที่ซ้อนกันจะถูกแยกออกเป็นไฟล์ต่างหากหรือไม่?
ตัวเลือกทั่วไป table จับคู่ทั้งตารางภายนอกและตารางซ้อน ใช้ตัวเลือกที่เฉพาะเจาะจงมากขึ้นเมื่อตารางซ้อนควรอยู่เฉพาะภายในตารางแม่และไม่ควรถูกเขียนเป็นไฟล์แยกด้วย
เวิร์กโฟลว์ตาราง HTML ที่เกี่ยวข้อง
สร้าง แก้ไข หรือแยกค่าจากตารางด้วยคู่มือ Aspose.HTML for .NET