Excel VBA以CreateObject外掛IE瀏覽器,瞭解HTML網頁原始碼爬蟲

Excel內建「從Web」取得網頁資料指令,但如果想執行進階的網路爬蟲,必須有網頁原始碼HTML基本知識,同時以VBA CreateObject外掛IE瀏覽器,本文以稅務新聞為例介紹。

所謂的網頁,技術上是遠端有另一台電腦(計算機服務器),透過網際網路傳過來標準規範文件(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爬蟲文章合集

C23a64

最新文章: