Selenium บทเรียนการใช้งาน VBA ใน Excel (Chrome Web Screen)ping)
⚡ สรุปอย่างชาญฉลาด
Selenium VBA ใน Excel ช่วยทำให้กระบวนการต่างๆ เป็นไปโดยอัตโนมัติ Google Chrome เพื่อดึงข้อมูลจากหน้าเว็บ HTML โดยใช้ Selenium ไลบรารีประเภทและเมธอดของ WebDriver เพื่อเปิดไซต์ ค้นหาองค์ประกอบตารางตามคลาสและแท็ก และเขียนผลลัพธ์ลงในเซลล์ของเวิร์กชีต
Data Scra คืออะไรping การใช้ Selenium?
Selenium เป็นเครื่องมืออัตโนมัติที่ช่วยอำนวยความสะดวกในการขูดข้อมูลping ข้อมูลจากหน้าเว็บ HTML โดยทำการดึงข้อมูลจากเว็บ (web scraping)ping สีสดสวย Google Chromeในโปรแกรม Excel นั้น Selenium ไลบรารีประเภทข้อมูลช่วยให้ VBA สามารถใช้งานกับเบราว์เซอร์จริงแทนที่จะใช้เอนจิ้น Internet Explorer ที่ล้าสมัย
วิธีเตรียมมาโคร Excel ก่อนการดึงข้อมูลping การใช้ Selenium
มีข้อกำหนดเบื้องต้นบางประการที่ต้องดำเนินการกับไฟล์มาโคร Excel ก่อนเริ่มการดึงข้อมูลping กระบวนการ
ข้อกำหนดเบื้องต้นมีดังต่อไปนี้:
ขั้นตอน 1) เปิดมาโครที่สร้างจากไฟล์ Excel แล้วเข้าถึงตัวเลือกสำหรับนักพัฒนาซอฟต์แวร์ของ Excel
ขั้นตอน 2) เลือกตัวเลือก Visual Basic ในแถบเครื่องมือ Developer
ขั้นตอน 3) ใส่โมดูลใหม่
ขั้นตอน 4) เริ่มต้นใช้งานซับรูทีนใหม่และตั้งชื่อว่า test2
Sub test2() End Sub
ผลลัพธ์ในโมดูลจะเป็นดังนี้:
ขั้นตอน 5) เข้าถึงตัวเลือก "การอ้างอิง" ภายใต้แท็บ "เครื่องมือ" และอ้างอิงถึง Selenium ไลบรารีประเภท (Type Library) ไลบรารีนี้ช่วยเปิดกว้าง Google Chrome และช่วยอำนวยความสะดวกในการเขียนสคริปต์มาโคร
ตอนนี้ไฟล์ Excel พร้อมที่จะใช้งานร่วมกับเบราว์เซอร์แล้ว ขั้นตอนต่อไปคือการใส่สคริปต์มาโครที่จะช่วยอำนวยความสะดวกในการดึงข้อมูลping ในรูปแบบ HTML
วิธีการเปิด Google Chrome การใช้วีบีเอ
ต่อไปนี้คือขั้นตอนในการเปิดใช้งาน Google Chrome โดยใช้ VBA
ขั้นตอน 1) ประกาศและกำหนดค่าเริ่มต้นให้กับตัวแปรในซับรูทีนตามที่แสดงด้านล่าง
Sub test2() Dim driver As New WebDriver Dim rowc, cc, columnC As Integer
ขั้นตอน 2) เพื่อเปิด Google Chrome ด้วย Selenium และ VBA เขียน driver.Start “Chrome” แล้วกด F5
ต่อไปนี้จะเป็นโค้ด
Sub test2() Dim driver As New WebDriver Dim rowc, cc, columnC As Integer driver.Start "Chrome" Application.Wait Now + TimeValue("00:00:20") End Sub
โมดูลจะมีผลลัพธ์ดังนี้:
วิธีเปิดเว็บไซต์ใน Google Chrome การใช้วีบีเอ
เมื่อคุณสามารถเข้าถึงได้ Google Chrome ขั้นตอนต่อไปคือการเข้าถึงเว็บไซต์โดยใช้ VBA ซึ่งทำได้โดยใช้ฟังก์ชัน Get URL ถูกส่งผ่านโดยใช้เครื่องหมายอัญประกาศคู่
โมดูลจะมีลักษณะดังนี้:
กด F5 เพื่อเรียกใช้มาโคร เว็บเพจต่อไปนี้จะเปิดขึ้น Google Chrome ตามที่ปรากฏ.
Sub test2() Dim driver As New WebDriver Dim rowc, cc, columnC As Integer driver.Start "Chrome" driver.Get "https://demo.guru99.com/test/web-table-element.php" Application.Wait Now + TimeValue("00:00:20") End Sub
ตอนนี้มาโคร Excel พร้อมที่จะทำการขูดข้อมูลแล้วping งานต่างๆ ขั้นตอนต่อไปแสดงให้เห็นว่าสามารถแสดงข้อมูลได้อย่างไรtracted โดยการประยุกต์ใช้ Selenium และ VBA
วิธีการดึงข้อมูลจากเว็บไซต์โดยใช้ VBA
สมมติว่านักลงทุนรายวันต้องการเข้าถึงข้อมูลจากเว็บไซต์ทุกวัน ทุกครั้งที่นักลงทุนคลิกปุ่ม ระบบควรดึงข้อมูลตลาดเข้าสู่ Excel โดยอัตโนมัติ
จากเว็บไซต์ข้างต้น จำเป็นต้องตรวจสอบองค์ประกอบและสังเกตโครงสร้างของข้อมูล เข้าถึงซอร์สโค้ด 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>
ดังที่คุณเห็น ข้อมูลถูกจัดโครงสร้างในรูปแบบตาราง HTML เดียว ดังนั้น เพื่อดึงข้อมูลทั้งหมดจากตาราง HTML คุณต้องออกแบบมาโครที่ดึงข้อมูลส่วนหัวและข้อมูลที่เกี่ยวข้องกับตารางนั้น ทำตามขั้นตอนด้านล่างนี้
ขั้นตอน 1) สร้างลูป For ที่วนซ้ำข้อมูลส่วนหัวของ HTML ในรูปแบบของคอลเลกชัน Selenium ไดรเวอร์จะค้นหาข้อมูลส่วนหัวโดยใช้วิธี FindElementByClass() และ FindElementByTag() ดังที่แสดงไว้
Sub test2() Dim driver As New WebDriver Dim rowc, cc, columnC As Integer rowc = 2 Application.ScreenUpdating = False driver.Start "chrome" driver.Get "https://demo.guru99.com/test/web-table-element.php" For Each th In driver.FindElementByClass("dataTable").FindElementByTag("thead").FindElementsByTag("tr") cc = 1 For Each t In th.FindElementsByTag("th") Sheet2.Cells(1, cc).Value = t.Text cc = cc + 1 Next t Next th
ขั้นตอน 2) ถัดไป Selenium ไดรเวอร์ค้นหาข้อมูลในตารางโดยใช้วิธีการที่คล้ายกัน เขียนโค้ดต่อไปนี้:
Sub test2() Dim driver As New WebDriver Dim rowc, cc, columnC As Integer rowc = 2 Application.ScreenUpdating = False driver.Start "chrome" driver.Get "https://demo.guru99.com/test/web-table-element.php" For Each th In driver.FindElementByClass("dataTable").FindElementByTag("thead").FindElementsByTag("tr") cc = 1 For Each t In th.FindElementsByTag("th") Sheet2.Cells(1, cc).Value = t.Text cc = cc + 1 Next t Next th For Each tr In driver.FindElementByClass("dataTable").FindElementByTag("tbody").FindElementsByTag("tr") columnC = 1 For Each td In tr.FindElementsByTag("td") Sheet2.Cells(rowc, columnC).Value = td.Text columnC = columnC + 1 Next td rowc = rowc + 1 Next tr Application.Wait Now + TimeValue("00:00:20") End Sub
สามารถเริ่มต้นใช้งาน Excel ได้โดยใช้แอตทริบิวต์ Range หรือแอตทริบิวต์ Cells ของชีต เพื่อลดความซับซ้อนของสคริปต์ VBA ข้อมูลคอลเลกชันจะถูกเริ่มต้นใช้งานในแอตทริบิวต์ Cells ของชีตที่ 2 ในเวิร์กบุ๊ก แอตทริบิวต์ Text ช่วยในการวางข้อความไว้ภายใต้แท็ก HTML
Sub test2() Dim driver As New WebDriver Dim rowc, cc, columnC As Integer rowc = 2 Application.ScreenUpdating = False driver.Start "chrome" driver.Get "https://demo.guru99.com/test/web-table-element.php" For Each th In driver.FindElementByClass("dataTable").FindElementByTag("thead").FindElementsByTag("tr") cc = 1 For Each t In th.FindElementsByTag("th") Sheet2.Cells(1, cc).Value = t.Text cc = cc + 1 Next t Next th For Each tr In driver.FindElementByClass("dataTable").FindElementByTag("tbody").FindElementsByTag("tr") columnC = 1 For Each td In tr.FindElementsByTag("td") Sheet2.Cells(rowc, columnC).Value = td.Text columnC = columnC + 1 Next td rowc = rowc + 1 Next tr Application.Wait Now + TimeValue("00:00:20") End Sub
โมดูล VBA จะมีลักษณะดังนี้:
ขั้นตอน 3) เมื่อสคริปต์มาโครพร้อมแล้ว ให้กำหนดซับรูทีนให้กับปุ่มใน Excel แล้วออกจากโมดูล VBA ตั้งชื่อปุ่มว่า Refresh หรือชื่ออื่นๆ ที่เหมาะสม ในตัวอย่างนี้ ปุ่มมีชื่อว่า Refresh
ขั้นตอน 4) กดปุ่มรีเฟรชเพื่อดูผลลัพธ์ด้านล่าง
ขั้นตอน 5) เปรียบเทียบผลลัพธ์ใน Excel กับผลลัพธ์ใน Google Chrome.













