SeleniumBasic
https://github.com/florentbr/SeleniumBasic/releases/tag/v2.0.9.0
下載SeleniumBasic v2.0.9.0 安裝後VBA設定引用項目Selenium Type Library

WebDriver
https://getwebdriver.com/chromedriver
下載目前chrome版本的WebDriver檔名為ChromeDriver(每次更新chrome都要下載新版)

找到SeleniumBasic的安裝位置,例如下圖 將ChromeDriver的檔案內容,覆蓋SeleniumBasic的安裝位置的chromedriver.exe

Sub 抓價格()
' 宣告 WebDriver 物件
Dim bot As New WebDriver
Dim priceElement As WebElement
' 添加參數來指定用戶資料目錄
bot.AddArgument "--user-data-dir=C:\\temp\\ChromeProfile"
' 添加其他設置以加快速度
bot.AddArgument "--headless" '不顯示CHROME
bot.AddArgument "--disable-javascript" ' 禁用javascript
bot.AddArgument "--blink-settings=imagesEnabled=false" ' 禁用圖片加載
bot.AddArgument "--disable-extensions" ' 禁用擴展程序
bot.AddArgument "--disable-cache" ' 禁用緩存
bot.AddArgument "--disable-predicting" ' 禁用網路預測
bot.AddArgument "--disable-gpu" ' 禁用 GPU 加速
' 啟動 Chrome 瀏覽器' bot.Start "chrome", "C:\\Users\\5871224\\Desktop\\chrome-win64\\chrome.exe"
bot.Start "chrome"
'開啟網址
bot.Get "<https://www.samsung.com/tw/search/?searchvalue=aaa>"
'網頁加載可設固定等待時間,本例是用迴圈判斷某元素判斷是否加載完成
' 設定超時時限
timeout = 3
' 設定目前時間
startTime = Timer
Do
Set priceElements = bot.FindElementsByCss(".item .money")
' 若找到元素或超過超時則跳出循環
If priceElements.Count > 0 Or Timer - startTime > timeout Then Exit Do
DoEvents ' 讓程式可以繼續處理其他事件
Loop
' 停止 WebDriver
bot.Quit
End Sub
定位資料
Set element = bot.FindElementById("Id")
Set element = bot.FindElementByName("Name")
Set element = bot.FindElementsByName("Name") '多一個S,用於匹配一個以上對象,以下同
Set element = bot.FindElementByClassName("ClassName")
Set element = bot.FindElementByTagName("div")
Set element = bot.FindElementByLinkText("鏈接文字") '特定文字的鏈接
Set element = bot.FindElementByPartialLinkText("鏈接文字")'包含特定文字的鏈接
Set element = bot.FindElementByCss("#myId .myClass")'同CSS選擇器
Set element = bot.FindElementByXPath("//span[@class='A']")
'組合使用,先找到一個元素,然後在其中再查找子元素
Dim parentElement As WebElement
Set parentElement = bot.FindElementById("parentId")
Set childElement = parentElement.FindElementByClassName("childClass")
選擇哪種定位方法取決於 HTML 結構和你的具體需求。
一般來說: