การขูดเว็บ Excel VBA
VBA Web Scrapingเป็นเทคนิคในการเข้าถึงหน้าเว็บและดาวน์โหลดข้อมูลจากเว็บไซต์นั้นไปยังไฟล์คอมพิวเตอร์ของเรา การขูดเว็บทำได้โดยการเข้าถึงแอปพลิเคชันภายนอกเช่น Internet Explorer เราสามารถทำได้สองวิธีคือการผูกแบบเร็วและการผูกแบบล่าช้า
การขูดเว็บด้วย VBA หมายถึงเมื่อเราใช้ VBA เพื่อดึงข้อมูลจากแหล่งอื่น ๆ บนเว็บอาจต้องมีการเข้าสู่ระบบสำหรับแหล่งข้อมูล แต่ก่อนอื่นในการดำเนินการดังกล่าวเราต้องเปิดใช้งานการอ้างอิงจากส่วนเครื่องมือใน ตัวแก้ไข VBA สำหรับไลบรารี Microsoft HTML เพื่อเข้าถึงเว็บจาก VBA
พวกเราหลายคนไม่ทราบว่าจาก excel เราสามารถเข้าถึงหน้าเว็บและรับข้อมูลจากหน้าเว็บเหล่านั้นได้ ใช่คุณได้ยินถูกต้อง เราสามารถขูดผ่านหน้าเว็บเข้าถึงแอปพลิเคชันการท่องเว็บและอื่น ๆ อีกมากมาย ในบทความนี้เราจะแสดงวิธีการเขียนโค้ด excel VBA สำหรับการขูดเว็บโดยละเอียด
โดยปกติเราจะเปิดหน้าเว็บคัดลอกข้อมูลและวางลงในไฟล์ของเราเช่น excel, word หรือไฟล์อื่น ๆ แต่ในบทความนี้เราจะแสดงวิธีเข้าถึงเว็บไซต์จาก excel และทำสิ่งอื่น ๆ อีกมากมาย
วิธีการคัดลอกข้อมูลเว็บไซต์โดยใช้ VBA
คุณสามารถดาวน์โหลดเทมเพลต Excel VBA Web Scraping ได้ที่นี่ - เทมเพลต Excel ของ VBA Web Scrapingเมื่อเราต้องการเข้าถึงแอปพลิเคชันอื่น ๆ จาก excel เราสามารถทำได้ด้วยวิธีการเช่น ในขั้นเริ่มต้นคุณควรใช้เทคนิค“ Early Binding” เสมอ
ในการเข้าถึงเว็บไซต์เราจำเป็นต้องมีแอปพลิเคชันการท่องเว็บตัวอย่างเช่น“ Internet Explorer ” เนื่องจากเป็นวัตถุภายนอกเราจึงต้องตั้งค่าการอ้างอิงก่อน
ทำตามขั้นตอนด้านล่างเพื่อดูเรื่องที่สนใจของเว็บ
ขั้นตอนที่ 1:กำหนดตัวแปร VBA และกำหนดประเภทข้อมูลเป็น“ Internet Explorer ”
รหัส:
Sub Web_Scraping () Dim Internet_Explorer As internet End Sub
ดังที่คุณเห็นด้านบนเมื่อเราพยายามตั้งค่าการอ้างอิงเป็น Internet Explorer เราไม่เห็น“ Internet Explorer” เนื่องจาก“ Internet Explorer” เป็นวัตถุภายนอกดังนั้นเราจึงจำเป็นต้องตั้งค่าการอ้างอิง
ขั้นตอนที่ 2:ในการตั้งค่าการอ้างอิงให้ไปที่ " เครื่องมือ " และเลือก " ข้อมูลอ้างอิง "
ในหน้าต่างด้านล่างให้เลื่อนลงและเลือก“ Microsoft Internet Controls ”
ขั้นตอนที่ 3:ทำเครื่องหมายที่ช่อง“ Microsoft Internet Controls” แล้วคลิกตกลง ตอนนี้เราควรเห็นชื่อวัตถุนี้ในรายการ IntelliSense
รหัส:
Sub Web_Scraping () Dim Internet_Explorer เป็น inter End Sub
ขั้นตอนที่ 4:เลือก“ InternetExplorer”
รหัส:
Sub Web_Scraping () Dim Internet_Explorer As InternetExplorer End Sub
ขั้นตอนที่ 5:ต่อไปเราต้องตั้งค่าการอ้างอิงเพื่อเปิดใช้งาน Internet Explorer เนื่องจากนี่เป็นตัวแปรออบเจ็กต์เราจึงต้องใช้คีย์เวิร์ด“ Set ” เพื่อตั้งค่าการอ้างอิง
รหัส:
Sub Web_Scraping () Dim Internet_Explorer As InternetExplorer ตั้งค่า Internet_Explorer = New InternetExplorer End Sub
ขั้นตอนที่ 6:ตอนนี้ใช้ตัวแปร“ Internet_Explorer ” เราสามารถใช้คุณสมบัติและวิธีการของ internet explorer ได้
ป้อนชื่อตัวแปรและใส่จุดเพื่อดูรายการ IntelliSense
รหัส:
Sub Web_Scraping () Dim Internet_Explorer As InternetExplorer ตั้งค่า Internet_Explorer = New InternetExplorer Internet_Explorer End Sub
ขั้นตอนที่ 7:ในการดูแอปพลิเคชัน internet explorer เราจำเป็นต้องเลือกคุณสมบัติ“ Visible ” และตั้งสถานะเป็น“ True ”
รหัส:
Sub Web_Scraping () Dim Internet_Explorer As InternetExplorer ตั้งค่า Internet_Explorer = New InternetExplorer Internet_Explorer.Visible = True End Sub
ตอนนี้เรียกใช้รหัสและคุณจะเห็นInternet Explorerเปิดขึ้นบนคอมพิวเตอร์ของคุณ
ขั้นตอนที่ 8:เนื่องจากไม่มีการกล่าวถึงที่อยู่เว็บเราจึงเห็นเพียงหน้าเปล่า ในการให้ที่อยู่เว็บแก่ Internet Explorer เราต้องใช้วิธี " การนำทาง "
รหัส:
Sub Web_Scraping () Dim Internet_Explorer As InternetExplorer ตั้งค่า Internet_Explorer = New InternetExplorer Internet_Explorer.Visible = True Internet_Explorer.Navigate (End Sub
ขั้นตอนที่ 9: ดังที่คุณเห็นข้างต้นวิธี "การนำทาง" ถามว่าจะนำทาง URL ใดใน internet explorer ตอนนี้ฉันต้องเปิดเว็บไซต์“ Wallstreetnmojo ” และสามารถระบุที่อยู่ URL ได้ดังนี้ “ //www.wallstreetmojo.com/”
รหัส:
Sub Web_Scraping () Dim Internet_Explorer As InternetExplorer ตั้งค่า Internet_Explorer = InternetExplorer ใหม่ Internet_Explorer.Visible = True Internet_Explorer.Navigate ("//www.wallstreetmojo.com") End Sub
ตอนนี้เรียกใช้รหัสเราจะเห็นหน้าที่อยู่เว็บดังกล่าวใน internet explorer
ที่นี่เรามีปัญหาว่าเมื่อเปิดหน้าเว็บแล้วรหัสของเราต้องรอจนกว่าหน้าเว็บจะเปิดเต็มที่
ขั้นตอนที่ 10:เราจำเป็นต้องใช้ลูป“ Do While” ใน VBA เพื่อรอให้โค้ดของเราดำเนินต่อไปจนกว่าหน้าดังกล่าวจะโหลดจนเต็ม
ดังนั้นเพิ่มด้านล่างของลูป“ Do While” เพื่อบังคับให้มาโครรอจนกว่าหน้าเว็บดังกล่าวจะเข้าสู่โหมด“ Ready State Complete ”
รหัส:
Sub Web_Scraping() Dim Internet_Explorer As InternetExplorer Set Internet_Explorer = New InternetExplorer Internet_Explorer.Visible = True Internet_Explorer.Navigate ("//www.wallstreetmojo.com") Do While Internet_Explorer.ReadyState READYSTATE_COMPLETE: Loop End Sub
Step 11: Now let’s try to get information about the website in a single line. To get the information about the mentioned web address information we need to use the “Location Name” property.
Code:
Sub Web_Scraping() Dim Internet_Explorer As InternetExplorer Set Internet_Explorer = New InternetExplorer Internet_Explorer.Visible = True Internet_Explorer.Navigate ("//www.wallstreetmojo.com") Do While Internet_Explorer.ReadyState READYSTATE_COMPLETE: Loop MsgBox Internet_Explorer.LocationName End Sub
Run the code and in the message box, we would get the information about the website.
Step 12: Now at the bottom, we can also print website addresses as well.
Code:
Sub Web_Scraping() Dim Internet_Explorer As InternetExplorer Set Internet_Explorer = New InternetExplorer Internet_Explorer.Visible = True Internet_Explorer.Navigate ("//www.wallstreetmojo.com") Do While Internet_Explorer.ReadyState READYSTATE_COMPLETE: Loop MsgBox Internet_Explorer.LocationName & vbNewLine & vbNewLine & Internet_Explorer.LocationURL End Sub
Now this will tell about the website description and also shows the website address as well.
Things to Remember here
- Web scraping is possible by accessing external applications like Internet Explorer.
- We can do it in two ways i.e. Early Binding & Late Binding. With Early Binding, we can get to see the IntelliSense list but with late binding, we cannot get to see the IntelliSense list at all.