Excel VBA抓取網頁資料必須有相關知識會比較順利,本文以1組爬蟲程式作為範例,帶你瞭解ie物件和html文件這兩個常常搭配的基本觀念,瞭解如何實際應用。
目錄
Toggle所謂的網頁,技術上是遠端有另一台電腦(計算機服務器),透過網際網路傳過來標準規範文件(HTML編碼檔案),然後本機電腦上的瀏覽器予以解譯,以文字(可能外掛影音檔)方式呈現在使用者眼前。所以每個網頁本質上皆是一個特定格式的文字檔案。如果要在取得網頁更加順利,勢必得具備網頁的基礎知識,這一節便從網頁原始碼談起。
一、稅務新聞
新竹市稅務局的「稅務新聞」。

二、從Web
首先利用第一章所學,Excel最原始的取得網頁資料方法:「資料」、「從Web」,開啓網頁之後「匯入」。

三、匯入網頁
取得的網頁資料如圖所示,這個方法會匯入網頁上所有可見文字,但其實所需要的只是標黃色部份,亦即儲存格A478及A479。

四、網頁原始碼
以Chrome瀏覽器在這個網頁上滑鼠右鍵:「檢視網頁原始碼」。

五、HTML文件
以網頁原始碼來看,網頁上的正文新聞稿,在HTML文件裡是一個div(division區塊),其分類名稱為「main-a_03」。

六、VBA CreateObject
編寫VBA程式碼如下,由於「CreateObject(“InternetExplorer.Application”)」是這一章的重點,在此先不多作說明,留待下一節。

七、下載網頁原始碼
執行結果如圖所示,等於將第五步驟的網頁原始碼下載到Excel,非常神奇吧!

八、執行階段錯誤
最後特別提醒,VBA不像Excel,有時候出現錯誤提示很難確定原因,在這裡作者就曾經遇到過困難,中斷提示為「執行階段錯誤’91’:沒有設定物件變數或With區塊變數」,怎麼看都不知道到底程式碼哪裡有瑕疵,經過幾次腦袋短路之後,才確定是無法連上網路,VBA無法完成任務,所以報錯,經驗之談供讀者參考。

HTML文件及VBA網路爬蟲
這節範例有兩個重點,其一,網頁上的某個特定對象,是原始網頁文件中的某一個段落,以專業術語來說,是HTML(HyperText Markup Language)中的一個節點(node),例如這裡的稅務新聞正文,是網頁中一個分類名稱為「main-a_03」的節點。其二,本書到上一章為止,都是以「QueryTables.Add」方法取得網頁資料,這是Excel內置的指令,相當方便,但是有先天上的侷限性,因此會於往後章節詳細介紹另一種VBA方法:「CreateObject(“InternetExplorer.Application”)」。
贊贊小屋VBA教學中心:
Excel巨集錄製教學、Excel巨集程式、VBA編輯器、VBA自學入門、VBA基礎語法、VBA基本應用、VBA UserForm、VBA VLOOKUP。
取得範例程式請前往VBA社團,訂閱請加入VBA Line社群。
VBA課程推薦:零基礎入門進階的20小時完整內容