2024年6月10日 星期一

分享用ChatGPT產生網路爬蟲VBA程式超簡單的影片摘要

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

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

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

這部影片介紹如何使用 ChatGPT 生成 VBA 程式來爬取網站資料。

影片一開始講解如何向 ChatGPT 描述任務。重點是要提到使用 VBA提供目標網站的 URL 以及指定資料的目的地 使用 IE 物件以確保 ChatGPT 理解要求。

ChatGPT 隨後會生成 VBA 程式,該程式使用 IE 物件來導覽網站並將資料下載到 Excel 試算表中 。影片中指出,ChatGPT 生成的程式碼片段可以直接複製並貼入 Excel 中。

生成的程式碼中存在一個錯誤,因為影片中嘗試寫入未建立的工作表。影片中透過移除對工作表的參照來修正程式碼,並解釋了為何此方法可以修正錯誤。影片中也提到,如果提供錯誤的程式碼片段,ChatGPT 可以自行修正程式碼。

總體而言,這部影片展示了如何使用 ChatGPT 生成 VBA 程式來爬取網站資料。影片中強調,此技術對於 VBA 編碼新手特別有幫助。

以下是影片中提到的幾個重點

  • 使用 ChatGPT 生成 VBA 程式可以節省時間和精力,尤其是對於 VBA新手而言。
  • ChatGPT 可以生成可直接複製並貼入 Excel 中的程式碼
  • 如果 ChatGPT 生成的程式碼有錯誤,可以提供錯誤的程式碼片段給 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


其他相關學習: