在自動化的領域裡,我們經常會碰到一個很重要的任務,那就是「網頁爬蟲 (scraping)」。簡單來說,就是把網站上的大量資料分類整理好,放到資料庫裡。我們可以利用 N8N 來爬取任何網站,而且 Scraping 對於自動化來說,是一個非常好的練習,裡面涉及到許多不同的技術。
這一次,我做了一個 Scraping 的工作流,想跟大家一起分解一下!廢話不多說,Let’s do it!
網頁爬蟲實戰:用 N8N 和 AI 輕鬆抓取資料
今天要 Scrape 的網站是 Books To Scrape,它是一個專門用來給大家練習 Scraping 的網站。你可以看到左手邊是它的 categories 分類,裡面則是每一本書的資料。

我們的目標
利用 N8N 把這一頁的資料 Scrape 下來,並且進到每一本書的內頁,把裡面的詳細資料也放到 Airtable 裡面。

工作流程概覽
首先,我們會需要一個 trigger 來啟動整個流程,然後進入到「read home page」節點,讀取 Books To Scrape 的首頁版面。在這個版面,我們可以拿到大約 20 本書的資料,接著放到 OpenAI 裡面提取有用的資訊。
提取完資訊後,因為它是一個 array,所以我們要把它分開成一個一個的 item,然後設置圖片,最後放到 Airtable 裡面。這就是第一步。
網頁爬蟲應用情境:台灣與香港實例
網頁爬蟲在台灣和香港的應用非常廣泛,從電商價格追蹤到房地產資訊收集,都能看到它的身影。以下是一些常見的應用情境:
- 電商比價:台灣的 PChome、momo 購物,香港的 HKTVmall 等電商平台,可以用爬蟲自動比價,找出最優惠的商品。
- 房地產資訊:台灣的 591 房屋交易網,香港的中原地產網,可以用爬蟲抓取最新的房源資訊和價格。
- 新聞輿情監控:可以監控台灣的 PTT、Dcard,香港的連登討論區等論壇,分析輿情走向。
- 金融數據分析:抓取台灣證券交易所、香港交易所的數據,進行股票分析。
- 社群媒體監控:監控 Facebook、Instagram 等社群媒體,了解品牌聲量和用戶反饋。
玻璃陳 Pro Tip: 我自己曾經用爬蟲分析過香港市場上的口罩價格,在疫情初期幫我快速掌握了市場行情,也算是小小的創業靈感來源。
網頁爬蟲注意事項:合法合規是關鍵
在台灣和香港使用網頁爬蟲時,務必注意法律和道德規範,尊重網站的使用條款和 robots.txt 協議,避免過度抓取造成伺服器負擔,甚至觸犯法律。
以下是一些注意事項:
- 尊重 robots.txt:robots.txt 文件定義了網站允許和禁止爬蟲抓取的範圍,務必遵守。
- 控制抓取頻率:避免過度頻繁的抓取,以免造成伺服器負擔,甚至被網站封鎖 IP。
- 使用者代理(User-Agent):設定合適的使用者代理,表明你的爬蟲身份,方便網站管理者識別。
- 數據使用規範:抓取到的數據只能用於合法目的,不得用於商業用途或侵犯他人權益。
- 個人資料保護:注意台灣的個人資料保護法,香港的個人資料(私隱)條例,避免非法收集和使用個人資料。
網頁爬蟲技術選擇:Python vs. N8N
程式語言 | Python | 無需程式碼 |
---|---|---|
學習曲線 | 陡峭 | 平緩 |
靈活性 | 極高 | 高 |
開發速度 | 慢 | 快 |
適合對象 | 開發者 | 非開發者 |
台灣社群 | 熱絡,資源豐富 | 新興,待發展 |
香港社群 | 活躍,英文資源多 | 新興,待發展 |
如果你是開發者,熟悉 Python,那它的確是個強大的選擇。但如果你沒有程式基礎,或者想快速搭建爬蟲,N8N 的 No-Code 特性會更適合你。在台灣和香港,Python 的社群都比較成熟,可以找到很多學習資源和技術支援。
N8N 工作流詳細拆解
接下來,我們深入看看每個環節是怎麼運作的。
1. 讀取網頁資料:HTTP Request + Jina.ai
我們會用到 HTTP Request 這個 node,用 GET method 來運行第一個版面的資料抓取。
同時,我們會用到 Jina.ai。 Jina.ai 是一個非常好用的 API,能做的東西很多,但今天我們主要是用了它的 Reader 功能。你可以把要 Scrape 的版面 URL 放進 Jina.ai 的 playground 裡面,如果使用 API key,可以得到更高的 rate limit。

建議大家打開 json response,這在整個自動化流程裡面非常重要。如果沒有 JSON 格式,很多資料我們都沒辦法直接使用,或是需要經過處理才能使用。
在 Jina.ai 得出 cURL 程式碼後,複製它。
為什麼要複製這個呢?我們來重現這個 node。
- 首先我們找一個 HTTP Request
- 裡面有一個 import curl
- 把剛才我們複製到的代碼放進去
- 點 import
基本上所有的設定都已經做好了,然後就可以輕輕鬆鬆的把 http request 來設置好。
你會看到這裡有非常多的資料,它其實是一個 Markdown 的格式。Markdown 格式比較容易被 AI 消化,因為我們接下來要把資料放到 AI 裡面去。
HTTP Request 節點設定:台灣網站常見問題
在台灣抓取一些網站的資料時,可能會遇到一些問題,例如編碼問題、反爬蟲機制等。以下是一些常見問題和解決方法:
- 反爬蟲機制:一些網站會使用反爬蟲機制,例如驗證碼、IP 封鎖等。可以嘗試以下方法繞過反爬蟲機制:
- 設定 User-Agent:模擬瀏覽器發送請求。
- 使用代理 IP:避免 IP 被封鎖。
- 控制抓取頻率:避免過度頻繁的請求。
- Cookie 處理:處理網站的 Cookie。
如何處理台灣政府網站的資料
台灣政府網站提供了大量的公開資料,例如交通資訊、空氣品質、政府預算等。這些資料通常以 JSON 或 CSV 格式提供,方便爬蟲抓取。
以下是一些台灣政府開放資料平台的連結:
- 政府資料開放平台:https://data.gov.tw/
- 台北市政府資料開放平台:https://data.taipei/
- 新北市政府資料開放平台:https://data.ntpc.gov.tw/
在抓取政府網站資料時,需要注意以下事項:
- API Key:有些政府網站需要 API Key 才能抓取資料,請先申請 API Key。
- 資料格式:政府網站提供的資料格式可能不統一,需要根據不同的資料格式進行處理。
- 資料更新頻率:政府網站資料的更新頻率可能不同,需要定期檢查資料是否有更新。
2. 用 AI 提取關鍵資訊:OpenAI
我用了 OpenAI,然後寫了一個非常簡單的 Prompt: help me extract book information from below context
,然後把剛才 Scrape 到的東西直接拖過來就可以了。
我們要讓 AI 幫我們做四件事情:
- Book Title
- Book Link
- Book Price
- Book Cover URL
我們要拿 Book URL 的最終原因是我們要把它 upload 到 Airtable 裡面,因為我們最後要放到 Airtable 裡面。
Model 我們會選擇 4o-mini
,因為做的事情不是很複雜,用 4o-mini
就非常足夠了。然後記得把這個 output content as json
把它打勾。
你會看到它會 output 四個東西給我們:Book Title、Book Link、Book Price 跟 Book Cover URL。
現在這個情況,因為它是一個 array,所以返回的結果是只有一個 item,一個 item 我們是很難操作的,所以我們要把它分開來。我們會用 split out 把 books 拖過來。
這樣子,每一個 item 都會列出來,然後我們看一下它 output 是 20 個 items,這樣子在操作的時候就比較簡單。
Prompt 工程:提升 AI 資訊提取精準度
在台灣和香港,使用 OpenAI 等 AI 模型提取資訊時,Prompt 的設計至關重要。一個好的 Prompt 可以顯著提升提取的精準度和效率。
以下是一些 Prompt 工程的技巧:
- 明確指令:清楚地告訴 AI 你需要提取什麼資訊,例如「請從以下內容中提取書名、作者和價格」。
- 提供範例:提供一些範例,讓 AI 更好地理解你的需求,例如「書名:百年孤寂,作者:加西亚・马尔克斯,價格:300 元」。
- 限定格式:指定 AI 輸出的格式,例如 JSON 格式,方便後續處理。
- 加入情境:提供一些情境資訊,幫助 AI 更好地理解內容,例如「這是一本小說的介紹」。
玻璃陳 Pro Tip: 我在設計 Prompt 時,會先用少量的樣本數據進行測試,不斷調整 Prompt,直到 AI 能夠正確提取到我需要的資訊。
OpenAI 模型選擇:在台灣與香港的考量
OpenAI 提供了多種模型,例如 GPT-3、GPT-3.5、GPT-4 等。不同的模型在價格、速度、準確度等方面有所差異。在台灣和香港,選擇 OpenAI 模型時,需要考慮以下因素:
- 價格:OpenAI 模型按照 token 收費,token 是模型處理的文本單位。GPT-4 的價格比 GPT-3.5 高,但準確度也更高。
- 速度:GPT-3.5 的速度比 GPT-4 快,適合需要快速處理大量數據的場景。
- 語言支援:OpenAI 模型對中文的支援程度不同。GPT-4 對中文的支援更好,但價格也更高。
- API 穩定性:OpenAI 的 API 可能會不時調整,需要關注 API 的變更,及時更新程式碼。
模型 | 價格 | 速度 | 準確度 | 中文支援 | 適合場景 |
---|---|---|---|---|---|
GPT-3.5 | 低 | 快 | 中 | 良好 | 大量數據處理,對準確度要求不高 |
GPT-4 | 高 | 慢 | 高 | 非常好 | 需要高準確度,對速度要求不高,需要處理複雜中文內容 |
GPT-4o | 中 | 中 | 高 | 非常好 | 價格和速度平衡,適合大多數場景 |
3. 資料整理與儲存:Airtable
把圖片放到 Airtable 裡面,不是簡簡單單就把 link 放到裡面。我設置了一個 variable,裡面裝了這個 JSON:url
等於這個 book cover。
據說 N8N 對於 Airtable 這個 API 好像沒有那麼完善,所以我們要 upload 或是用圖片的話只能這樣子做。

到最後 set 了以後,總共有 20 個 book 的 information,我們就可以把它放到我們的 Airtable 裡面。這個 Airtable 我已經事先做好的,上面會有 book title、cover url、description、category、price、UPC、status,就是我們剛才在 Books To Scrape 的地方看到的東西,我們要把它抓取下來變成一個資料庫。
按進去裡面會有 title、還有 description,裡面有他的 UPC,那我們就不拿那麼多了,我們就拿一點點的,然後還有 stock 的 status。
Airtable 替代方案:Google Sheets 與 Notion Database
除了 Airtable,在台灣和香港,Google Sheets 和 Notion Database 也是常用的資料儲存和管理工具。它們都提供了 API,可以與 N8N 等自動化工具整合。
- Google Sheets:Google Sheets 是一個免費的線上試算表工具,易於使用,適合儲存和管理簡單的數據。
- Notion Database:Notion Database 是一個靈活的資料庫工具,可以自定義欄位和視圖,適合儲存和管理複雜的數據。
特性 | Airtable | Google Sheets | Notion Database |
---|---|---|---|
價格 | 付費 | 免費 | 免費 / 付費 |
易用性 | 良好 | 非常好 | 較複雜 |
靈活性 | 高 | 中 | 非常高 |
適合場景 | 複雜數據管理 | 簡單數據儲存 | 知識庫,項目管理 |
台灣用戶數量 | 中等 | 高 | 快速成長 |
香港用戶數量 | 中等 | 高 | 快速成長 |
玻璃陳 Pro Tip: 如果你需要與團隊成員共享數據,Google Sheets 是一個不錯的選擇。如果你需要建立一個知識庫或項目管理系統,Notion Database 可能更適合你。
Airtable API 限制:用戶的考量
Airtable API 有一些限制,例如請求次數限制、數據大小限制等。如果需要處理大量數據,需要考慮這些限制。
- 請求次數限制:Airtable API 有請求次數限制,免費帳戶每秒只能發送 5 個請求,付費帳戶每秒可以發送 8 個請求。如果超過請求次數限制,會收到
429 Too Many Requests
錯誤。 - 數據大小限制:Airtable API 有數據大小限制,每個欄位最多可以儲存 32,000 個字元。如果超過數據大小限制,會收到錯誤。
- 圖片上傳限制:Airtable API 上傳圖片比較麻煩,需要先將圖片上傳到雲端儲存服務,然後將圖片 URL 儲存到 Airtable。
解決方案:
- 使用 batch 請求
- 優化數據結構
- 使用第三方圖片上傳服務
4. 抓取內頁資訊:Loop + Dynamic URL
上一部分,我們抓取了一些基本的資料,還沒有進到每一本書的內頁去抓取裡面的資料,比方說 description、他的 UPC、他的 Stock Status。
接下來要把這 20 個資料放到一個 loop 裡面。平常我們要去看他的資料的時候,是不是還要點進去?同樣的原理,把這個點進去的動作做 20 遍,所以就把他放到一個 loop 裡面。
這個 loop 裡面的動作跟剛才我們所做的好像差不多,但唯一不同的是,當它 loop 第一個 record 來進行一次操作。
這一次我們同樣也是用到 Jina,但是這一次不是一個固定的網址,我們是一個 dynamic 的網址,就是每一次他運行一次 loop,他都會有變動的。
前面 Jina.ai 的這個網址是固定的,但是後面的這一個我們是要浮動的。我們把 book url 拖到上面去,他的結果是變成那本書的 single page。
同樣的,用 4o-mini 就可以做一個簡單的 Prompt,跟剛才那個非常像,也是讓他給我們四個東西:一個是 description、一個是 category、第三個是 UPC、然後第四個是 status,然後讓他去把這裡的資料提取出來。
就把剛才我們所提取到的放到 Airtable 裡面。同樣的,我們要先把 ID 放進去,這個 ID 是哪裡的 ID?就是 Airtable 的 ID,這個 Airtable 的 ID 我們可以在哪裡拿到呢?
記不記得剛才我們有運行過一次 Airtable,我們在這裡運行過一次 Airtable,他其實可以在這裡抓取他的 record 的 ID 所在。
然後我們點進去以後,打開這個符號,然後選擇我們剛才那個 loop over item 的 node,你會看到這裡有個 ID,這個 ID 就是我們再搜一個就是 Airtable 傳輸過去給他的。
然後把 description、category、UPC、status 放過去,非常簡單,就是拖拖拉拉就可以做自動化了,是不是很好?
剛才我們的這個 Airtable 的動作是 create a record,但這一次我們的 Airtable 是做 update 的動作,因為我們已經有了所有的二十本書的資料,我們需要的就是把還沒有的東西填寫到空位裡面,所以這一次要做的是一個 update 的動作,會給到一個 id 給他來辨認啊,我是要更新這一行的資料。
最後我們等待一秒鐘,然後再返回整個 loop,再來重新一遍。
循环结构优化:提升爬取效率
在台灣和香港,網絡環境可能不穩定,使用迴圈抓取大量資料時,需要注意迴圈的效率和穩定性。以下是一些迴圈結構優化的技巧:
- 使用並行迴圈:N8N 支援並行迴圈,可以同時處理多個 item,提高抓取效率。但要注意,並行迴圈可能會增加伺服器的負擔,需要根據伺服器的性能調整並行數量。
- 增加延遲:在迴圈中增加延遲,避免過度頻繁的請求,被網站封鎖 IP。
- 錯誤處理:在迴圈中增加錯誤處理,當抓取失敗時,可以自動重試或跳過,避免迴圈中斷。
- 使用資料庫緩存:將已經抓取到的資料儲存到資料庫中,下次抓取時,先檢查資料庫中是否已經存在,避免重複抓取。
動態 URL 的生成與管理:中文網址的特殊性
有些網站的 URL 結構比較特殊,例如包含中文、特殊符號等。在 N8N 中生成和管理動態 URL 時,需要注意 URL 的編碼和轉義。
- URL 編碼:對於包含中文或特殊符號的 URL,需要進行 URL 編碼,將這些字元轉換為 URL 安全的格式。
- URL 轉義:對於包含特殊字元的 URL,例如
?
、&
等,需要進行 URL 轉義,避免這些字元被錯誤解析。 - 使用模板字符串:N8N 支援模板字符串,可以使用模板字符串生成動態 URL,方便 URL 的管理和維護。
實際執行與成果展示
為了讓大家更清楚整個流程,我把所有的 record 都刪了,然後整個流程 run 一遍,看看它的效果是怎麼樣。在它跑的過程當中,你會看到我們會用到剛才有說的,用到兩個的 OpenAI 的 node。
可能比較熟悉自動化,或者是比較熟悉 Scraping,甚至是一些 developer 會說,我做這個 Scraping 根本用不了 OpenAI,也不用浪費這個錢。
但說實話,這只是對於比較有操作能力的你們。我們這些 No-Code 或者是真的小白的話,在這種情況下我們用 OpenAI,或是用其他 AI 的 API 會更合適,因為我們只需要給他一個指令,讓他給我們符合的資料就可以了。
然後看到它已經填完一些基本的資料,開始進去每一本書內頁裡面抓取他的資料。估計這個流程大概還需要一點點時間。
這個整個流程是一個非常好的學習方法,他裡面包含了很多基礎的用法,就是 N8N 基礎的用法和一些技巧。我會把這個 workflow 的 JSON 檔放到那個簡介框框裡面,你可以到那個連接裡面拿到他那個 json import 到你的 N8N 裡面去試一下去嘗試一下,運行這個 workflow 也好,自己改一下這個 workflow 也好,或是用來做參考也好。
業配工作流 JSON 模板:https://seafoodhandhold.gumroad.com/l/n8n-basic-jina-scraper
總結
這個影片演示了如何利用 N8N 自動化工具和 AI 技術實現網頁數據抓取(scraping),並將結果整理到 Airtable 數據庫。影片強調自動化工具在數據抓取中的高效性,展示了從基礎到進階的完整操作鏈。適合對 N8N 和 AI 應用感興趣的初學者學習,同時也為開發者提供了低代碼 / 無代碼的實踐參考。
影片重點回顧
- 工具整合:結合 N8N、Jina.ai(網頁解析)、OpenAI(數據提取)、Airtable(數據存儲),實現全自動化流程。
- 動態處理:通過循環和動態 URL 實現多層級數據抓取,減少重複操作。
- AI 輔助:利用 AI 模型快速解析非結構化數據,降低代碼依賴,適合無編程經驗的用戶。
如果你喜歡這篇文章,記得分享給你的朋友!也歡迎在下方留言,分享你使用 N8N 的經驗和想法。
資源連結
- n8n Cloud 官方連結:https://seafoodholdhand.com/recommends/n8n-cloud/
- 業配工作流 JSON 模板:https://seafoodhandhold.gumroad.com/l/n8n-basic-jina-scraper
- n8n 官方 Discord 社群:https://discord.com/invite/XPKeKXeB7d
- 我們的討論區:https://circle.seafoodholdhand.com/