使用 Notion AI / ChatGPT 解析網頁內容和輸出 JSON

彼得潘的 iOS App Neverland
10 min readMar 5, 2023

--

當網站沒有提供 API 時,為了取得方便 App 存取的網頁內容,我們通常要另外撰寫爬蟲程式將網頁內容整理成 JSON。

不過最近 Notion AI 和 ChatGPT 橫空出世後,我們不寫爬蟲也能將網頁整理成 JSON 了。

以下我們介紹兩種方法,這兩個方法都可透過 Notion AI 和 ChatGPT 產生 JSON,以下我們主要以 Notion AI 示範。

  • 方法 1: 解析網頁的 html。
  • 方法 2: 解析選取複製的網頁文字。

ps: 對 Notion AI 不熟的朋友,請先參考以下連結的說明。

方法 1: 解析網頁的 html

以威秀影城的電影為例,我們想將網頁的電影變成 JSON 格式的電影清單。

儲存網頁的 html,點選 File > Save As。

Format 選擇 Page Source。

找到 html 裡電影資料的區塊。從下圖可發現電影資料在 <ul class="movieList"> 下。

ps: 雖然我們也可以貼上整個 html,請 AI 找出其中的電影資料,不過測試時發現 AI 沒那麼聰明,因此身為聰明的人類,我們還是幫一下 AI,先幫它找出電影資料的區塊吧。

複製 <ul class="movieList"> 整個區塊的程式。

貼到 Notion。

請 Notion AI 生成 JSON,輸入以下問題。

將資料整理成 JSON,欄位需包含電影名,圖片網址,上映日期

Notion AI 不負所托,順利產生電影資料的 JSON。(ps: imageURL 的 .. 換成
https://www.vscinemas.com.tw/vsweb 即可生成圖片網址)

[
{
"movieName": "沙贊!眾神之怒",
"imageURL": "../upload/film/film_20230218019.jpg",
"releaseDate": "2023-03-16"
},
{
"movieName": "鈴芽之旅",
"imageURL": "../upload/film/film_20230218036.jpg",
"releaseDate": "2023-03-02"
},
{
"movieName": "關於我和鬼變成家人的那件事",
"imageURL": "../upload/film/film_20230105001.jpg",
"releaseDate": "2023-02-10"
},
{
"movieName": "蟻人與黃蜂女:量子狂熱",
"imageURL": "../upload/film/film_20230116003.jpg",
"releaseDate": "2023-02-15"
},
{
"movieName": "「鬼滅之刃」上弦集結,前進刀匠村",
"imageURL": "../upload/film/film_20230201055.jpg",
"releaseDate": "2023-02-17"
},
{
"movieName": "灌籃高手 THE FIRST SLAM DUNK",
"imageURL": "../upload/film/film_20230110014.jpg",
"releaseDate": "2023-01-13"
},
{
"movieName": "無人相信的真相",
"imageURL": "../upload/film/film_20230218101.jpg",
"releaseDate": "2023-03-17"
},
{
"movieName": "悲情城市",
"imageURL": "../upload/film/film_20230201043.jpg",
"releaseDate": "2023-02-24"
},
{
"movieName": "日麗",
"imageURL": "../upload/film/film_20230130013.jpg",
"releaseDate": "2023-02-10"
},
{
"movieName": "寶塚歌劇 花組東京寶塚劇場公演『梅耶林』『ENCHANTEMENT-華麗的香水-』千秋樂 現場直播",
"imageURL": "../upload/film/film_20230217006.jpg",
"releaseDate": "2023-03-19"
},
{
"movieName": "羽生結弦 notte stellata 現場直播",
"imageURL": "../upload/film/film_20230302001.jpg",
"releaseDate": "2023-03-12"
}
]

方法 2: 解析選取複製的網頁文字

以最近即將開打的世界棒球經典賽為例。

選取複製 A 組賽程的表格。

複製的文字如下。

日期 客場球隊 比數 主場球隊 守備局數 球場 時間 觀眾 交戰記錄
3月8日 12:00 古巴 – 荷蘭 臺中市洲際棒球場
比賽總記錄
3月8日 19:00 巴拿馬 – 中華臺北 臺中市洲際棒球場
比賽總記錄
3月9日 12:00 巴拿馬 – 荷蘭 臺中市洲際棒球場
比賽總記錄
3月9日 19:00 義大利 – 古巴 臺中市洲際棒球場
比賽總記錄
3月10日 12:30 古巴 – 巴拿馬 臺中市洲際棒球場
比賽總記錄
3月10日 19:00 義大利 – 中華臺北 臺中市洲際棒球場
比賽總記錄
3月11日 12:00 巴拿馬 – 義大利 臺中市洲際棒球場
比賽總記錄
3月11日 19:00 荷蘭 – 中華臺北 臺中市洲際棒球場
比賽總記錄
3月12日 12:00 中華臺北 – 古巴 臺中市洲際棒球場
比賽總記錄
3月12日 19:00 荷蘭 – 義大利 臺中市洲際棒球場
比賽總記錄

在 Notion 貼上剛剛的文字後,請 Notion AI 生成 JSON,輸入以下問題。

請將資料整理成 JSON 格式,欄位名稱用 lowerCamelCase

Notion AI 再次成功地生成 JSON,以下為 2023 世界棒球經典賽的 JSON,希望台灣在預賽第一場順利打敗巴拿馬 !

[
{
"date": "3月8日 12:00",
"awayTeam": "古巴",
"awayScore": "-",
"homeTeam": "荷蘭",
"homeScore": "",
"inning": "",
"stadium": "臺中市洲際棒球場",
"time": "",
"audience": "",
"record": ""
},
{
"date": "3月8日 19:00",
"awayTeam": "巴拿馬",
"awayScore": "-",
"homeTeam": "中華臺北",
"homeScore": "",
"inning": "",
"stadium": "臺中市洲際棒球場",
"time": "",
"audience": "",
"record": ""
},
{
"date": "3月9日 12:00",
"awayTeam": "巴拿馬",
"awayScore": "-",
"homeTeam": "荷蘭",
"homeScore": "",
"inning": "",
"stadium": "臺中市洲際棒球場",
"time": "",
"audience": "",
"record": ""
},
{
"date": "3月9日 19:00",
"awayTeam": "義大利",
"awayScore": "-",
"homeTeam": "古巴",
"homeScore": "",
"inning": "",
"stadium": "臺中市洲際棒球場",
"time": "",
"audience": "",
"record": ""
},
{
"date": "3月10日 12:30",
"awayTeam": "古巴",
"awayScore": "-",
"homeTeam": "巴拿馬",
"homeScore": "",
"inning": "",
"stadium": "臺中市洲際棒球場",
"time": "",
"audience": "",
"record": ""
},
{
"date": "3月10日 19:00",
"awayTeam": "義大利",
"awayScore": "-",
"homeTeam": "中華臺北",
"homeScore": "",
"inning": "",
"stadium": "臺中市洲際棒球場",
"time": "",
"audience": "",
"record": ""
},
{
"date": "3月11日 12:00",
"awayTeam": "巴拿馬",
"awayScore": "-",
"homeTeam": "義大利",
"homeScore": "",
"inning": "",
"stadium": "臺中市洲際棒球場",
"time": "",
"audience": "",
"record": ""
},
{
"date": "3月11日 19:00",
"awayTeam": "荷蘭",
"awayScore": "-",
"homeTeam": "中華臺北",
"homeScore": "",
"inning": "",
"stadium": "臺中市洲際棒球場",
"time": "",
"audience": "",
"record": ""
},
{
"date": "3月12日 12:00",
"awayTeam": "中華臺北",
"awayScore": "-",
"homeTeam": "古巴",
"homeScore": "",
"inning": "",
"stadium": "臺中市洲際棒球場",
"time": "",
"audience": "",
"record": ""
},
{
"date": "3月12日 19:00",
"awayTeam": "荷蘭",
"awayScore": "-",
"homeTeam": "義大利",
"homeScore": "",
"inning": "",
"stadium": "臺中市洲際棒球場",
"time": "",
"audience": "",
"record": ""
}
]

--

--

彼得潘的 iOS App Neverland
彼得潘的 iOS App Neverland

Written by 彼得潘的 iOS App Neverland

彼得潘的 Swift iOS App 程式設計入門,文組生的 Swift iOS App 程式設計入門,彼得潘的 Flutter 跨平台 App 程式設計入門講師,彼得潘的 Swift 程式設計入門,App程式設計入門作者,http://apppeterpan.strikingly.com

Responses (1)