Html.Table ใช้สำหรับแยกข้อมูลจากตารางหรือรายการในเอกสาร HTML โดยใช้ CSS selectors เพื่อกำหนดตำแหน่งและคอลัมน์
=Html.Table(html as any, columnNameSelectorPairs as list, optional options as nullable record) as table
=Html.Table(html as any, columnNameSelectorPairs as list, optional options as nullable record) as table
| Argument | Type | Required | Default | Description |
|---|---|---|---|---|
| html | any | Yes | เอกสาร HTML ที่ต้องการแยกข้อมูล (สามารถเป็น text หรือ binary) | |
| columnNameSelectorPairs | list | Yes | รายการ (list) ของ {“ชื่อคอลัมน์”, “CSS selector”} หรือ {“ชื่อคอลัมน์”, “CSS selector”, transformation function} เพื่อกำหนดว่าจะแยกข้อมูลตรงไหนและตั้งชื่อคอลัมน์อย่างไร | |
| options | record | Optional | null | ตัวเลือกเพิ่มเติม เช่น [RowSelector=”.row”] เพื่อกำหนด CSS selector สำหรับแถว (rows) |
let HtmlContent = "JohnManagerJaneEngineer", Result = Html.Table(HtmlContent, {{"Name", ".name"}, {"Role", ".role"}}) in Resultlet
HtmlContent = "<table><tr><td class='name'>John</td><td class='role'>Manager</td></tr><tr><td class='name'>Jane</td><td class='role'>Engineer</td></tr></table>",
Result = Html.Table(HtmlContent, {{"Name", ".name"}, {"Role", ".role"}})
in
Result
Table with 2 rows: Name='John', Role='Manager'; Name='Jane', Role='Engineer'
let HtmlContent = "Page 1Page 2", Result = Html.Table( HtmlContent, {{"Link URL", "a", each [Attributes][href]}}, [RowSelector="a"] ) in Resultlet
HtmlContent = "<div><a href='/page1.html'>Page 1</a><a href='/page2.html'>Page 2</a></div>",
Result = Html.Table(
HtmlContent,
{{"Link URL", "a", each [Attributes][href]}},
[RowSelector="a"]
)
in
Result
Table with 2 rows: Link URL='/page1.html'; Link URL='/page2.html'
let HtmlContent = Web.BrowserContents("https://example.com"), ExtractedTable = Html.Table( HtmlContent, {{"Product", ".product-name"}, {"Price", ".product-price…let
HtmlContent = Web.BrowserContents("https://example.com"),
ExtractedTable = Html.Table(
HtmlContent,
{{"Product", ".product-name"}, {"Price", ".product-price"}, {"Link", "a", each [Attributes][href]}}
)
in
ExtractedTable
Table containing product names, prices, and links extracted from the webpage
Web.Page auto-detect ตารางใน HTML แล้วคืนข้อมูลอัตโนมัติ แต่ Html.Table ให้คุณควบคุมได้มากขึ้นด้วย CSS selectors ที่ชัดเจน
ใช้ได้เท่ากับ CSS selectors มาตรฐาน เช่น .classname, #id, element, [attribute], parent > child ฯลฯ
ได้ Web.BrowserContents return HTML content ซึ่ง Html.Table สามารถ parse ได้
คอลัมน์นั้นจะมีค่า null หรือเปล่า ไม่ raise error
Html.Table เป็นฟังก์ชันที่ดีเมื่อคุณต้องการ Web Scraping – ดึงข้อมูลจากหน้า HTML กลับมาเป็น Table ในที่แรม Power Query ก็คือการสร้าง Table จากข้อมูล HTML ด้วยการระบุชื่อคอลัมน์ (Name) และ CSS Selector (ตำแหน่งของข้อมูลที่ต้องการ)
ส่วนที่เจ๋งของฟังก์ชันนี้คือสามารถดึง attributes เช่น href, src ได้ด้วย โดยใช้ [Attributes] เพื่อเข้าถึง properties ของ HTML elements
ส่วนตัวผม มักใช้ Html.Table เมื่อเจอ API ที่ return HTML แทน JSON ครับ ทำให้เปลี่ยน HTML โครงสร้าง schema ไม่ทำให้ query พัง เหมือนกับ JSON ขอให้ชื่อ key เปลี่ยน 😎