VBA Web Scraping สู่ Excel

⚡ สรุปอย่างชาญฉลาด

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

  • 🧰 การทำงานอัตโนมัติด้วย VBA: VBA ใช้โปรแกรม Excel ในการควบคุม Internet Explorer เพื่อโหลดเว็บเพจและอ่านโค้ด HTML ของเว็บเพจนั้น
  • 📚 เอกสารอ้างอิงที่จำเป็น: Microsoft ไลบรารีวัตถุ HTML และ Microsoft ต้องมีการอ้างอิงถึงส่วนควบคุมอินเทอร์เน็ตในโครงการ
  • 🌐 วิธีการนำทาง: เมธอด Navigate จะเปิดเป้าหมาย URLและโค้ดจะรอจนกว่าหน้าเว็บจะพร้อมใช้งาน
  • 🧱 การแยกวิเคราะห์ตาราง HTML: เมธอด getElementsByTagName จะอ่านข้อมูลจากตารางเพื่อให้สามารถวนลูปผ่านแถวและเซลล์ต่างๆ ได้
  • 📊 เขียนข้อมูลลงในเซลล์: ค่าที่รวบรวมได้จะถูกบันทึกไว้ในเซลล์ของเวิร์กชีต โดยมักจะอยู่หลังปุ่มรีเฟรช
  • 🤖 ความช่วยเหลือจาก AI: เครื่องมือ AI และผู้ช่วยนักบินในปัจจุบันสร้างข้อมูลดิบขึ้นมาping เขียนโค้ดและปรับตัวเลือกเมื่อเลย์เอาต์เปลี่ยนแปลง

VBA Web Scraping สู่ Excel

Data Scra คืออะไรping?

การขูดข้อมูลping เป็นเทคนิคที่ช่วย...tracคัดลอกข้อมูลที่ต้องการจากหน้าเว็บ HTML ไปยังไฟล์ในเครื่องของคุณ โดยปกติไฟล์นั้นจะเป็นไฟล์ Excel, ไฟล์ Word หรือไฟล์อื่นๆ Microsoft โปรแกรมสำนักงาน ช่วยในการส่งต่อข้อมูลสำคัญจากหน้าเว็บ

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

วิธีเตรียมมาโคร Excel ก่อนการดึงข้อมูลping (อินเทอร์เน็ตเอ็กซ์พลอเรอร์)

มีข้อกำหนดเบื้องต้นบางประการที่ต้องดำเนินการกับไฟล์มาโคร Excel ก่อนเริ่มการดึงข้อมูลping กระบวนการ

ข้อกำหนดเบื้องต้นมีดังต่อไปนี้:

ขั้นตอน 1) เปิดมาโครที่สร้างจากไฟล์ Excel แล้วเข้าถึงตัวเลือกสำหรับนักพัฒนาซอฟต์แวร์ของ Excel

เตรียมมาโคร Excel ก่อนทำการขูดข้อมูลping โดยใช้ Internet Explorer

ขั้นตอน 2) เลือกตัวเลือก Visual Basic ในแถบเครื่องมือ Developer

เตรียมมาโคร Excel ก่อนทำการขูดข้อมูลping โดยใช้ Internet Explorer

ขั้นตอน 3) ใส่โมดูลใหม่

เตรียมมาโคร Excel ก่อนทำการขูดข้อมูลping โดยใช้ Internet Explorer

ขั้นตอน 4) เริ่มต้นใช้งานซับรูทีนใหม่

Sub test()
End Sub

โมดูลจะมีผลลัพธ์ดังนี้:

เตรียมมาโคร Excel ก่อนทำการขูดข้อมูลping โดยใช้ Internet Explorer

ขั้นตอน 5) เข้าถึงตัวเลือก "การอ้างอิง" ภายใต้แท็บ "เครื่องมือ" และอ้างอิงถึง Microsoft ไลบรารีวัตถุ HTML และ Microsoft การควบคุมอินเทอร์เน็ต

ไฟล์ต่อไปนี้จะต้องถูกอ้างอิงถึงในโมดูล เนื่องจากไฟล์เหล่านี้ช่วยเปิด Internet Explorer และอำนวยความสะดวกในการเขียนสคริปต์มาโคร

อ้างอิง Microsoft ไลบรารีออบเจ็กต์ HTML และตัวควบคุมอินเทอร์เน็ต

ตอนนี้ไฟล์ 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 โดยใช้ Excel VBA

เปิด Internet Explorer โดยใช้ Excel VBA

วิธีเปิดเว็บไซต์ใน 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 เพื่อเรียกใช้มาโคร เว็บเพจต่อไปนี้จะเปิดขึ้นดังที่แสดงไว้

เปิดเว็บไซต์ใน Internet Explorer โดยใช้ VBA

ตอนนี้มาโคร 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

ขูดข้อมูลจากเว็บไซต์โดยใช้ VBA

ขั้นตอน 5) กดปุ่มรีเฟรชเพื่อดูผลลัพธ์ด้านล่าง

ขูดข้อมูลจากเว็บไซต์โดยใช้ VBA

ขั้นตอน 6) เปรียบเทียบผลลัพธ์ใน Excel กับผลลัพธ์ใน Internet Explorer

ขูดข้อมูลจากเว็บไซต์โดยใช้ VBA

คำถามที่พบบ่อย

ต้องมีการอ้างอิงสองรายการในโปรแกรมแก้ไข VBA ภายใต้ เครื่องมือ > การอ้างอิง: Microsoft ไลบรารีวัตถุ HTML และ Microsoft ส่วนควบคุมอินเทอร์เน็ต ส่วนเหล่านี้ช่วยให้ VBA สามารถเปิด Internet Explorer และไปยังเว็บไซต์ต่างๆ ได้ URLและอ่านองค์ประกอบ HTML ของหน้าเว็บ

ขึ้นอยู่กับเว็บไซต์นั้นๆ หลายเว็บไซต์จำกัดการดึงข้อมูลอัตโนมัติping ในข้อกำหนดและเงื่อนไขการให้บริการ ดังนั้นควรตรวจสอบก่อนและหลีกเลี่ยงการเก็บรวบรวมข้อมูลส่วนบุคคลหรือข้อมูลที่มีลิขสิทธิ์ Scraping โดยทั่วไปแล้ว การเปิดเผยข้อมูลต่อสาธารณะที่ได้รับอนุญาตเพื่อการวิเคราะห์ส่วนบุคคลนั้นมีความเสี่ยงต่ำกว่า

Internet Explorer เลิกใช้งานแล้ว ดังนั้นโครงการสมัยใหม่จึงใช้ .NET Framework แทน Selenium VBA แนวทางที่ขับเคลื่อน Chrome Firefoxหรือ Edge Selenium นำเสนอการรองรับหลายเบราว์เซอร์และการระบุตำแหน่งองค์ประกอบที่เชื่อถือได้มากขึ้นสำหรับเว็บไซต์ปัจจุบัน

ใช่แล้ว โปรแกรมดึงข้อมูลและผู้ช่วยนำทางที่ขับเคลื่อนด้วย AI สามารถระบุฟิลด์ข้อมูลและสร้างตัวอย่างได้tracโมเดลแมชชีนเลิร์นนิงยังสามารถวิเคราะห์หน้าเว็บที่ไม่มีโครงสร้าง ลดความพยายามในการเขียนและบำรุงรักษาโค้ด และปรับให้เข้ากับการเปลี่ยนแปลงเค้าโครงโดยอัตโนมัติ นอกจากนี้ โมเดลแมชชีนเลิร์นนิงยังสามารถวิเคราะห์หน้าเว็บที่ไม่มีโครงสร้าง ลดความพยายามในการเขียนและบำรุงรักษาโค้ดด้วยตนเองping สคริปต์

AI ใช้เทคโนโลยีการมองเห็นด้วยคอมพิวเตอร์และการประมวลผลภาษาธรรมชาติในการจดจำตาราง ราคา และข้อความบนหน้าเว็บ แม้ว่าจะไม่มีตัวเลือกที่กำหนดไว้ตายตัวก็ตาม ระบบอัจฉริยะนี้traction ทำให้เกิดรอยขีดข่วนping มีความยืดหยุ่นมากขึ้นเมื่อเว็บไซต์เปลี่ยนโครงสร้าง

สรุปโพสต์นี้ด้วย: