VBA Web Scraping สู่ Excel
⚡ สรุปอย่างชาญฉลาด
เว็บสแครปping ด้วย VBA extracข้อมูล ts จากหน้าเว็บ HTML ลงใน Excel โดยตรง โดยใช้ระบบอัตโนมัติของ Internet Explorer และ Microsoft ไลบรารีออบเจ็กต์ HTML สำหรับการนำทางเว็บไซต์ อ่านตาราง HTML และเขียนค่าที่รวบรวมได้ลงในเซลล์ของเวิร์กชีต

Data Scra คืออะไรping?
การขูดข้อมูลping เป็นเทคนิคที่ช่วย...tracคัดลอกข้อมูลที่ต้องการจากหน้าเว็บ HTML ไปยังไฟล์ในเครื่องของคุณ โดยปกติไฟล์นั้นจะเป็นไฟล์ Excel, ไฟล์ Word หรือไฟล์อื่นๆ Microsoft โปรแกรมสำนักงาน ช่วยในการส่งต่อข้อมูลสำคัญจากหน้าเว็บ
การขูดข้อมูลping สิ่งนี้จะมีค่าอย่างมากในโครงการวิจัยที่ต้องพึ่งพาอินเทอร์เน็ตเป็นประจำทุกวัน ยกตัวอย่างเช่น นักลงทุนรายวันที่ใช้มาโครใน Excel เพื่อดึงข้อมูลตลาดจากเว็บไซต์ด้านการเงินมาใส่ในแผ่นงาน Excel โดยใช้ VBA
วิธีเตรียมมาโคร Excel ก่อนการดึงข้อมูลping (อินเทอร์เน็ตเอ็กซ์พลอเรอร์)
มีข้อกำหนดเบื้องต้นบางประการที่ต้องดำเนินการกับไฟล์มาโคร Excel ก่อนเริ่มการดึงข้อมูลping กระบวนการ
ข้อกำหนดเบื้องต้นมีดังต่อไปนี้:
ขั้นตอน 1) เปิดมาโครที่สร้างจากไฟล์ Excel แล้วเข้าถึงตัวเลือกสำหรับนักพัฒนาซอฟต์แวร์ของ Excel
ขั้นตอน 2) เลือกตัวเลือก Visual Basic ในแถบเครื่องมือ Developer
ขั้นตอน 3) ใส่โมดูลใหม่
ขั้นตอน 4) เริ่มต้นใช้งานซับรูทีนใหม่
Sub test() End Sub
โมดูลจะมีผลลัพธ์ดังนี้:
ขั้นตอน 5) เข้าถึงตัวเลือก "การอ้างอิง" ภายใต้แท็บ "เครื่องมือ" และอ้างอิงถึง Microsoft ไลบรารีวัตถุ HTML และ Microsoft การควบคุมอินเทอร์เน็ต
ไฟล์ต่อไปนี้จะต้องถูกอ้างอิงถึงในโมดูล เนื่องจากไฟล์เหล่านี้ช่วยเปิด Internet Explorer และอำนวยความสะดวกในการเขียนสคริปต์มาโคร
ตอนนี้ไฟล์ Excel พร้อมที่จะใช้งานร่วมกับ Internet Explorer แล้ว ขั้นตอนต่อไปคือการใส่สคริปต์มาโครที่จะช่วยอำนวยความสะดวกในการดึงข้อมูลping ในรูปแบบ HTML
วิธีเปิด Internet Explorer โดยใช้ Excel VBA
ขั้นตอน 1) กำหนดค่าเริ่มต้นให้กับตัวแปรในซับรูทีนตามที่แสดงด้านล่าง
Sub test() Dim ie As New InternetExplorer Dim doc As New HTMLDocument
ขั้นตอน 2) หากต้องการเปิด Internet Explorer โดยใช้ VBA ให้พิมพ์ ie.Visible = True แล้วกด F5
Sub test() Dim ie As New InternetExplorer Dim doc As New HTMLDocument ie.Visible = True
โมดูลจะมีลักษณะดังนี้:
วิธีเปิดเว็บไซต์ใน Internet Explorer โดยใช้ VBA
ต่อไปนี้คือขั้นตอนการเปิดเว็บไซต์ใน Internet Explorer โดยใช้ VBA
ขั้นตอน 1) เมื่อคุณสามารถเข้าถึง Internet Explorer โดยใช้ Excel VBA ได้แล้ว ขั้นตอนต่อไปคือการเข้าถึงเว็บไซต์โดยใช้ VBA ซึ่งทำได้ง่ายขึ้นด้วยแอตทริบิวต์ Navigate โดยที่ URL ส่งผ่านโดยใช้เครื่องหมายคำพูดคู่ ทำตามขั้นตอนที่แสดงไว้
Sub test() Dim ie As New InternetExplorer Dim doc As New HTMLDocument Dim ecoll As Object ie.Visible = True ie.Navigate "https://demo.guru99.com/test/web-table-element.php" Do DoEvents Loop Until ie.readyState = READYSTATE_COMPLETE
ขั้นตอน 2) กด F5 เพื่อเรียกใช้มาโคร เว็บเพจต่อไปนี้จะเปิดขึ้นดังที่แสดงไว้
ตอนนี้มาโคร Excel พร้อมที่จะทำการขูดข้อมูลแล้วping ฟังก์ชันต่างๆ ขั้นตอนต่อไปจะแสดงวิธีการดึงข้อมูลออกมาtracดึงข้อมูลจาก Internet Explorer โดยใช้ VBA
วิธีการดึงข้อมูลจากเว็บไซต์โดยใช้ VBA
สมมติว่านักลงทุนรายวันต้องการเข้าถึงข้อมูลจากเว็บไซต์ทุกวัน ทุกครั้งที่นักลงทุนคลิกปุ่ม ระบบควรดึงข้อมูลตลาดเข้าสู่ Excel โดยอัตโนมัติ
จากเว็บไซต์ข้างต้น จำเป็นต้องตรวจสอบองค์ประกอบหนึ่งๆ และสังเกตโครงสร้างของข้อมูล
ขั้นตอน 1) เข้าถึงซอร์สโค้ดของ HTML ด้านล่างโดยกดปุ่ม Ctrl + Shift + ฉัน.
<table class="datatable">
<thead>
<tr>
<th>Company</th>
<th>Group</th>
<th>Pre Close (Rs)</th>
<th>Current Price (Rs)</th>
<th>% Change</th>
</tr>
โค้ดต้นฉบับจะเป็นดังนี้:
Sub test() Dim ie As New InternetExplorer Dim doc As New HTMLDocument Dim ecoll As Object ie.Visible = True ie.Navigate "https://demo.guru99.com/test/web-table-element.php" Do DoEvents Loop Until ie.readyState = READYSTATE_COMPLETE Set doc = ie.document
อย่างที่คุณเห็น ข้อมูลถูกจัดโครงสร้างในรูปแบบตาราง HTML เดียว ดังนั้น เพื่อดึงข้อมูลทั้งหมดจากตาราง HTML คุณต้องออกแบบมาโครที่รวบรวมข้อมูลเหล่านั้นเป็นชุด
จากนั้นจึงคัดลอกข้อมูลที่รวบรวมได้ไปวางใน Excel เพื่อให้ได้ผลลัพธ์ที่ต้องการ ให้ทำตามขั้นตอนด้านล่าง
ขั้นตอน 2) เริ่มต้นใช้งานเอกสาร HTML ในซับรูทีน
ขั้นตอน 3) เริ่มต้นใช้งานองค์ประกอบคอลเลกชันที่มีอยู่ในเอกสาร HTML
Sub test() Dim ie As New InternetExplorer Dim doc As New HTMLDocument Dim ecoll As Object ie.Visible = True ie.Navigate "https://demo.guru99.com/test/web-table-element.php" Do DoEvents Loop Until ie.readyState = READYSTATE_COMPLETE Set doc = ie.document Set ecoll = doc.getElementsByTagName("table")
ขั้นตอน 4) เริ่มต้นค่าเซลล์ในแผ่นงาน Excel โดยใช้ลูปซ้อนกันดังที่แสดงไว้
Sub test() Dim ie As New InternetExplorer Dim doc As New HTMLDocument Dim ecoll As Object ie.Visible = True ie.Navigate "https://demo.guru99.com/test/web-table-element.php" Do DoEvents Loop Until ie.readyState = READYSTATE_COMPLETE Set doc = ie.document Set ecoll = doc.getElementsByTagName("table")
สามารถกำหนดค่าเริ่มต้นให้กับ Excel ได้โดยใช้แอตทริบิวต์ Range หรือแอตทริบิวต์ Cells ของชีต เพื่อลดความซับซ้อนของสคริปต์ VBA ข้อมูลคอลเลกชันจึงถูกกำหนดค่าเริ่มต้นให้กับแอตทริบิวต์ Cells ของชีตที่ 1 ในเวิร์กบุ๊ก
เมื่อสคริปต์มาโครพร้อมแล้ว ให้กำหนดซับรูทีนให้กับปุ่มใน Excel แล้วออกจากโมดูล VBA ตั้งชื่อปุ่มว่า Refresh หรือชื่ออื่นๆ ที่เหมาะสม ในตัวอย่างนี้ ปุ่มมีชื่อว่า Refresh
ขั้นตอน 5) กดปุ่มรีเฟรชเพื่อดูผลลัพธ์ด้านล่าง
ขั้นตอน 6) เปรียบเทียบผลลัพธ์ใน Excel กับผลลัพธ์ใน Internet Explorer











