การขูดเว็บด้วย VBA
Data Scraping คืออะไร?
การขูดข้อมูลเป็นเทคนิคที่ช่วยในการดึงข้อมูลที่ต้องการจากหน้าเว็บ HTML ไปยังไฟล์ในเครื่องที่มีอยู่ในเครื่องของคุณ โดยปกติ ไฟล์ในเครื่องอาจสอดคล้องกับไฟล์ Excel ไฟล์ Word หรือพูดอะไรก็ได้ Microsoft ใบสมัครสำนักงาน ช่วยในการส่งข้อมูลที่สำคัญจากหน้าเว็บ
การขูดข้อมูลกลายเป็นเรื่องง่ายเมื่อทำงานในโครงการวิจัยเป็นประจำทุกวัน และโครงการดังกล่าวขึ้นอยู่กับอินเทอร์เน็ตและเว็บไซต์เพียงอย่างเดียว เพื่ออธิบายเพิ่มเติมในหัวข้อนี้ เราจะยกตัวอย่างเดย์เทรดเดอร์ที่ใช้งานมาโคร Excel เพื่อดึงข้อมูลตลาดจากเว็บไซต์การเงินลงในแผ่นงาน Excel โดยใช้ VBA
จะเตรียม Excel Macro ก่อนทำการ Data Scraping โดยใช้ Internet explorer ได้อย่างไร
มีข้อกำหนดเบื้องต้นบางประการที่ต้องดำเนินการกับไฟล์มาโคร Excel ก่อนที่จะเข้าสู่กระบวนการขูดข้อมูลใน Excel
ข้อกำหนดเบื้องต้นเหล่านี้มีดังนี้: –
ขั้นตอน 1) เปิดมาโครที่ใช้ Excel และเข้าถึงตัวเลือกนักพัฒนาของ Excel
ขั้นตอน 2) เลือกตัวเลือก Visual Basic ภายใต้ Ribbon ของนักพัฒนา
ขั้นตอน 3) ใส่โมดูลใหม่
ขั้นตอน 4) เริ่มต้นรูทีนย่อยใหม่
Sub test() End sub
โมดูลจะมีผลดังนี้: -
ขั้นตอน 5) เข้าถึงตัวเลือกการอ้างอิงภายใต้แท็บเครื่องมือและข้อมูลอ้างอิง Microsoft ไลบรารีวัตถุ HTML และ Microsoft การควบคุมอินเทอร์เน็ต
ไฟล์ต่อไปนี้มีไว้สำหรับอ้างอิงโมดูลเนื่องจากจะช่วยในการเปิด 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 โดยใช้ 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 เพื่อดำเนินการแมโคร หน้าเว็บต่อไปนี้จะเปิดขึ้นตามที่แสดง
ตอนนี้แมโคร 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 ติดป้ายกำกับปุ่มเป็นการรีเฟรชหรือชื่อที่เหมาะสมที่สามารถเริ่มต้นได้ สำหรับตัวอย่างนี้ ปุ่มจะถูกเตรียมใช้งานเป็นการรีเฟรช
ขั้นตอน 5) กดปุ่มรีเฟรชเพื่อรับเอาต์พุตที่กล่าวถึงด้านล่าง
ขั้นตอน 6) เปรียบเทียบผลลัพธ์ใน Excel กับผลลัพธ์ของ Internet Explorer
สรุป
- การขูดข้อมูลทำให้ผู้ใช้สามารถดึงเฉพาะข้อมูลที่ผู้ใช้ต้องการเท่านั้น หากต้องการค้นหาเครื่องมือที่ดีที่สุดสำหรับจุดประสงค์นี้ ลองดูรายการเครื่องมือขูดเว็บที่สามารถช่วยให้คุณดึงข้อมูลที่ต้องการจากเว็บไซต์ต่างๆ ได้อย่างมีประสิทธิภาพ
- การขูดสามารถทำได้โดยใช้ Internet Explorer
- กระบวนการขูดจะช้าลงในกรณีของ Internet Explorer แต่ก็ให้ผลลัพธ์ที่ต้องการแก่ผู้ใช้
- การขูดควรทำด้วยความระมัดระวังและรอบคอบอย่างยิ่ง เนื่องจากอาจสร้างอันตรายและพังระบบที่ใช้สำหรับการขูดได้