Thep Excel

Html.Tableแยกข้อมูลจากตารางในหน้า HTML

Html.Table ใช้สำหรับแยกข้อมูลจากตารางหรือรายการในเอกสาร HTML โดยใช้ CSS selectors เพื่อกำหนดตำแหน่งและคอลัมน์

fx
=Html.Table(html, columnNameSelectorPairs, [options]) as table

ความนิยม6/10
ความยาก3/10
ประโยชน์6/10

อัปเดต 12 December 2025

Syntax & Arguments

อาร์กิวเมนต์ ชนิด ค่าเริ่มต้น คำอธิบาย
html any เอกสาร HTML ที่ต้องการแยกข้อมูล (สามารถเป็น text หรือ binary)
columnNameSelectorPairs list รายการ (list) ของ {“ชื่อคอลัมน์”, “CSS selector”} หรือ {“ชื่อคอลัมน์”, “CSS selector”, transformation function} เพื่อกำหนดว่าจะแยกข้อมูลตรงไหนและตั้งชื่อคอลัมน์อย่างไร
[options]ไม่บังคับ record null ตัวเลือกเพิ่มเติม เช่น [RowSelector=”.row”] เพื่อกำหนด CSS selector สำหรับแถว (rows)

[ ] = อาร์กิวเมนต์ที่ไม่บังคับ

Additional Notes

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 เปลี่ยน 😎

Examples

ดึงข้อมูลจากตารางธรรมชาติlet HtmlContent = "JohnManagerJaneEngineer", Result = Html.Table(HtmlContent, {{"Name", ".name"}, {"Role", ".role"}}) in Result

ใช้ Html.Table ดึงข้อมูลจาก HTML โดยระบุ CSS selector .name สำหรับคอลัมน์ Name และ .role สำหรับคอลัมน์ Role ทำให้ได้ตารางข้อมูลที่มีโครงสร้างสำเร็จ

fx
let
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'
ดึง href attribute จาก anchor tagslet HtmlContent = "Page 1Page 2", Result = Html.Table( HtmlContent, {{"Link URL", "a", each [Attributes][href]}}, [RowSelector="a"] ) in Result

ใช้ transformation function (each [Attributes][href]) เพื่อดึง href attribute จาก element <a> แล้วใช้ RowSelector="a" เพื่อกำหนดว่าแต่ละแถวคือ element <a>

fx
let
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'
ดึงข้อมูลจาก HTML ที่มีโครงสร้างซับซ้อนlet HtmlContent = Web.BrowserContents("https://example.com"), ExtractedTable = Html.Table( HtmlContent, {{"Product", ".product-name"}, {"Price", ".product-price…

นี่คือตัวอย่างจริงจังที่ดึงข้อมูลจาก URL โดย Web.BrowserContents ก่อน แล้วใช้ Html.Table สกัดข้อมูลผลิตภัณฑ์ ราคา และ links – ประเมินว่า HtmlContent เป็น HTML string ที่ได้จากเพจ

fx
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

FAQs

Html.Table แตกต่างจาก Web.Page อย่างไร+

Web.Page auto-detect ตารางใน HTML แล้วคืนข้อมูลอัตโนมัติ แต่ Html.Table ให้คุณควบคุมได้มากขึ้นด้วย CSS selectors ที่ชัดเจน

CSS selector ที่ใช้ได้นั้นมีข้อจำกัดอะไร+

ใช้ได้เท่ากับ CSS selectors มาตรฐาน เช่น .classname, #id, element, [attribute], parent > child ฯลฯ

ใช้ Html.Table กับ Web.BrowserContents ได้ไหม+

ได้ Web.BrowserContents return HTML content ซึ่ง Html.Table สามารถ parse ได้

ถ้า selector ไม่เจอข้อมูลจะเกิดอะไร+

คอลัมน์นั้นจะมีค่า null หรือเปล่า ไม่ raise error

Resources & Related

ฟังก์ชันที่ผู้เขียนโยงไว้กับ Html.Table จัดกลุ่มตามหมวด · ชี้ที่ชื่อใดชื่อหนึ่ง แล้วฟังก์ชันที่ใช้คู่กันจะมีจุดทอง

ฟังก์ชันนี้Html.TableAccessing data functions
Accessing data functions (2)
Web.BrowserContents

Web.BrowserContents ใช้สำหรับการประมวลผล

Web.Page

Web.Page ใช้สำหรับการประมวลผล

Table functions (1)
Table.FromList

แปลง List เป็น Table โดยใช้ฟังก์ชัน Splitter เพื่อแยกข้อมูลเป็นคอลัมน์

Text functions (1)
Text.Split

Text.Split(text, separator) ใช้แยกข้อความเป็น List โดยอิงตามตัวคั่น (delimiter) ที่ระบุ สามารถใช้ตัวคั่นเพียงตัวเดียวหรือหลายตัวอักษร เช่น "|" หรือ ", the " ผลลัพธ์คืนค่าเป็น List ของข้อความ

Comments

อีเมลของคุณจะไม่ถูกเผยแพร่