การขูดเว็บด้วย VBA

Data Scraping คืออะไร?

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

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

จะเตรียม Excel Macro ก่อนทำการ Data Scraping โดยใช้ Internet explorer ได้อย่างไร

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

ข้อกำหนดเบื้องต้นเหล่านี้มีดังนี้: –

ขั้นตอน 1) เปิดมาโครที่ใช้ Excel และเข้าถึงตัวเลือกนักพัฒนาของ Excel

เตรียม Excel Macro ก่อนดำเนินการ Data Scraping โดยใช้ Internet Explorer

ขั้นตอน 2) เลือกตัวเลือก Visual Basic ภายใต้ Ribbon ของนักพัฒนา

เตรียม Excel Macro ก่อนดำเนินการ Data Scraping โดยใช้ Internet Explorer

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

เตรียม Excel Macro ก่อนดำเนินการ Data Scraping โดยใช้ Internet Explorer

ขั้นตอน 4) เริ่มต้นรูทีนย่อยใหม่

Sub test()
End sub

โมดูลจะมีผลดังนี้: -

เตรียม Excel Macro ก่อนดำเนินการ Data Scraping โดยใช้ Internet Explorer

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

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

เตรียม Excel Macro ก่อนดำเนินการ Data Scraping โดยใช้ Internet Explorer

ตอนนี้ไฟล์ Excel พร้อมที่จะโต้ตอบกับ Internet Explorer แล้ว ขั้นตอนต่อไปคือการรวมสคริปต์แมโครที่จะอำนวยความสะดวกในการคัดลอกข้อมูลในรูปแบบ HTML

จะเปิด Internet Explorer โดยใช้ Excel VBA ได้อย่างไร

ขั้นตอน 1) กำหนดค่าเริ่มต้นของตัวแปรในซับรูทีนดังแสดงด้านล่าง

Sub test()
Dim ie As New InternetExplorer 
Dim doc As New HTMLDocument

ขั้นตอน 2) หากต้องการเปิด Internet Explorer โดยใช้ VBA ให้เขียน เช่น มองเห็น=จริง และกด 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 Attribute โดยที่ 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 พร้อมสำหรับการดำเนินการฟังก์ชันการคัดลอกแล้ว ขั้นตอนต่อไปจะแสดงวิธีการดึงข้อมูลออกจาก Internet Explorer โดยใช้ VBA

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

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

จากเว็บไซต์ข้างต้น จำเป็นต้องตรวจสอบองค์ประกอบและสังเกตวิธีจัดโครงสร้างข้อมูล

ขั้นตอน 1) เข้าถึงซอร์สโค้ดด้านล่างของ HTML โดยกด control + 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 ในรูทีนย่อย

โมดูล VBA จะมีลักษณะดังนี้: –

ขั้นตอน 3) เริ่มต้นองค์ประกอบการรวบรวมที่มีอยู่ในเอกสาร HTML

โมดูล VBA จะมีลักษณะดังนี้: –

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 ด้วยความช่วยเหลือของการวนซ้ำแบบซ้อนดังที่แสดง

โมดูล VBA จะมีลักษณะดังนี้: –

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 ได้โดยใช้แอตทริบิวต์ช่วงของแผ่นงาน Excel หรือผ่านแอตทริบิวต์เซลล์ของแผ่นงาน Excel เพื่อลดความซับซ้อนของสคริปต์ VBA จึงกำหนดค่าเริ่มต้นข้อมูลของคอลเล็กชันเป็นแอตทริบิวต์เซลล์ Excel ของแผ่นงานที่ 1 ที่มีอยู่ในเวิร์กบุ๊ก

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

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

ขั้นตอน 5) กดปุ่มรีเฟรชเพื่อรับเอาต์พุตที่กล่าวถึงด้านล่าง

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

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

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

สรุป

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