2024年5月30日 星期四

分享用ChatGPT產生網路爬蟲VBA程式超簡單

分享用ChatGPT產生網路爬蟲VBA程式超簡單

相關課程:ChatGPT輔助EXCEL VBA網路爬蟲與圖表繪製班
https://ojt.wda.gov.tw/ClassSearch/Detail?OCID=157308&plantype=1

以往要將網頁的表格匯入到EXCEL,通常是用複製貼上人工方式,

但若是資料量龐大,或是資料經常更新,

那一定很耗費重複人力,既沒效率也浪費人力。

但以往要寫VBAPython爬蟲程式卻非常困難,

對程式小白賴說,簡直是不可能的任務,

但是,這次利用ChatGPT產生網路爬蟲VBA程式,真的比想像的還簡單,

打開ChatGPT輸入問題:


以交通部統計查詢網為例,想統計有感地震次數

網址:

https://stat.motc.gov.tw/mocdb/stmain.jsp?sys=220&ym=10000&ymt=11200&kind=21&type=1&funid=b820101&cycle=4&outmode=0&compmode=0&outkind=1&fldspc=1,8,&rdm=7axItf9i


想將上面網頁表格匯入到EXCEL中,寫出VBA程式,

用ChatGPT產生程式碼


Q:請幫我使用IE物件,撰寫VBA程式,將網址:https://stat.motc.gov.tw/mocdb/stmain.jsp?sys=220&ym=10000&ymt=11200&kind=21&type=1&funid=b820101&cycle=4&outmode=0&compmode=0&outkind=1&fldspc=1,8,&rdm=7axItf9i 匯入到EXCEL中

沒想到ChatGPT給的程式碼

A:

Sub ImportDataFromWebsite()

    ' 建立 Internet Explorer 物件

    Set ie = CreateObject("InternetExplorer.Application")

    ' 設定 IE 物件的屬性

    With ie

        .Visible = True

        .navigate "https://stat.motc.gov.tw/mocdb/stmain.jsp?sys=220&ym=10000&ymt=11200&kind=21&type=1&funid=b820101&cycle=4&outmode=0&compmode=0&outkind=1&fldspc=1,8,&rdm=7axItf9i"

        ' 等待網頁載入完成

        Do While .Busy Or .readyState <> 4

            DoEvents

        Loop

    End With

    ' 取得 HTML 文件

    Set html = ie.document

    ' 找到目標表格 (根據網頁結構可能需要修改)

    Set tbl = html.getElementsByTagName("table")(1)

    ' 抓取表格中的資料

    i = 1

    For Each rw In tbl.Rows

        j = 1

        For Each cl In rw.Cells

            Cells(i, j).Value = cl.innerText

            j = j + 1

        Next cl

        i = i + 1

    Next rw

    ' 關閉 IE

    ie.Quit

    Set ie = Nothing

End Sub


幾乎是一次較完成,但有兩個錯誤發生,

一個是找錯table標籤的索引值,html.getElementsByTagName("table")(1),

(0)改為(1)就可以了,因為這個網頁HTML裡有兩個table標籤,

我們需要的是第二個,GPT給的是第一個。

其次,是ws.Cells(i, j).Value = cl.innerText

刪除ws.就可以了,主要是我刪除前面的新增工作表兩行程式。

這樣居然就很快地把網頁的表格下再到EXCEL了,

其後改為別的網頁表格,一樣試用。


結論,AI生成程式真的大大縮短了程式設計的學習時間,

不用像以前需要填鴨式記憶一大堆程式碼,

但也不是不需要學習,而是學習程式設計的重點不同,

至少會看懂程式,並知道修改那些地方,

最好還是有除錯能力,若找不到錯誤,

還是可以把程式貼到ChatGPT請他幫忙除錯,

還真的很快找出來錯誤,至於不懂程式,

也可以請AI逐行解釋程式,解釋得實在是太詳細了。

總結AI能幫程式的至少有四,

一、生成程式

二、除錯程式

三、解釋程式

四、轉譯程式,可以把VBA轉為Python,

光這幾項,對程式小白來說,幾乎是直升機是能力提升,

但學習程式的重點需要調整,

不用死背程式,但須要看懂,

不用會寫程式,但要會跟AI溝通。


完整的教學影片:

https://terry55wu.blogspot.com/2024/05/chatgptvba.html


吳老師  113/5/24

吳老師excel函數Vba與Python大數據教學:

教學論壇:
台師大試算表進階應用與程式設計2021

懶人包:
EXCEL函數與VBA http://terry28853669.pixnet.net/blog/category/list/1384521
EXCEL VBA自動化教學 http://terry28853669.pixnet.net/blog/category/list/1384524


其他相關學習:


沒有留言: