VBA เว็บขูด | วิธีการคัดลอกเว็บไซต์โดยใช้ Excel VBA

การขูดเว็บ 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.