Excel VBA抓取網頁資料:ie物件與Html的1組應用

Excel VBA抓取網頁資料必須有相關知識會比較順利,本文以1組爬蟲程式作為範例,帶你瞭解ie物件和html文件這兩個常常搭配的基本觀念,瞭解如何實際應用。

所謂的網頁,技術上是遠端有另一台電腦(計算機服務器),透過網際網路傳過來標準規範文件(HTML編碼檔案),然後本機電腦上的瀏覽器予以解譯,以文字(可能外掛影音檔)方式呈現在使用者眼前。所以每個網頁本質上皆是一個特定格式的文字檔案。如果要在取得網頁更加順利,勢必得具備網頁的基礎知識,這一節便從網頁原始碼談起。

一、稅務新聞

新竹市稅務局的「稅務新聞」。

E28e11

二、從Web

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

E28e21

三、匯入網頁

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

E28e31

四、網頁原始碼

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

E28e41

五、HTML文件

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

E28e51

六、VBA CreateObject

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

E28e61

七、下載網頁原始碼

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

E28e71

八、執行階段錯誤

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

E28e81

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 UserFormVBA VLOOKUP

取得範例程式請前往VBA社團,訂閱請加入VBA Line社群

VBA課程推薦:零基礎入門進階的20小時完整內容

VBA課程:20小時完整入門進階,職場及投資應用

最新文章: