n8n 爬蟲實戰|自動擷取熱銷書榜資料、整理成結構化報表完整教學

更新於 2026年2月11日

n8n 爬蟲實戰 - 自動擷取熱銷書榜

📥 工作流 JSON 下載GitHub 範例庫 | 💬 社群討論Skool 雲端方程式 Cloud F1

專業導讀:n8n 爬蟲實戰——自動擷取熱銷書榜

💡 本文重點: 用 n8n 打造完整的網頁爬蟲工作流,自動擷取熱銷書排行榜資料(書名、作者、排名、價格),透過 CSS Selector 解析 HTML,整理成結構化 Google Sheets 報表,並設定每日排程自動更新。不用寫任何程式碼。

你將學到

  • ✅ 用 HTTP Request 節點擷取網頁 HTML 內容
  • ✅ 用 HTML Extract 節點搭配 CSS Selector 精準定位資料
  • ✅ 用 Set 節點整理欄位格式、清洗資料
  • ✅ 將結構化資料自動寫入 Google Sheets
  • ✅ 設定 Schedule Trigger 每日自動更新
  • ✅ 合規爬蟲的注意事項與 robots.txt 遵守原則

🎯 什麼是 n8n 網頁爬蟲?

n8n 網頁爬蟲是透過 HTTP Request 節點取得網頁 HTML 內容,再用 HTML Extract 節點搭配 CSS Selector 擷取目標資料,最終整理成結構化格式存入 Google Sheets 或資料庫的自動化工作流。 整個過程不需要寫 Python、不需要裝 Selenium,全部用 n8n 的拖拉式介面就能完成。

你有沒有遇過這種情況?你想追蹤某個書榜的排名變化,每天手動去網站看一次、截圖一次、記錄一次。做了兩天就放棄了,因為實在太無聊又太花時間。

我自己做內容行銷的時候就遇過這個問題。我需要追蹤技術書籍的銷售排名,看哪些主題正在上升,做為選題參考。手動追蹤根本不現實——我需要每天看 3 個書榜、記錄 30+ 本書的排名變化。後來用 n8n 建了一個爬蟲工作流,每天早上 7 點自動跑,資料直接寫進 Google Sheets,我只需要每週看一次趨勢圖就好。

大家可以想想看,這個爬蟲工作流除了書榜,還能用在哪些場景:

  • 電商比價:追蹤競品的定價變化
  • 新聞監測:自動擷取特定媒體的頭條新聞
  • 招聘資訊:追蹤特定職缺的薪資範圍
  • 房價追蹤:定期擷取房仲網站的成交價格
  • SEO 監控:追蹤競爭對手的關鍵字排名頁面

💡 為什麼用 n8n 做爬蟲而不是寫 Python?

很多人第一反應是:「爬蟲不是應該用 Python 的 BeautifulSoup 或 Scrapy 嗎?」

沒錯,Python 的爬蟲生態確實更成熟。但問題是——不是每個人都會寫 Python。而且寫完之後還要處理排程、錯誤處理、結果存儲、通知這些周邊需求。用 n8n,這些全部都是拖拉一個節點就搞定的事情。

n8n 爬蟲的三大優勢

  1. 零程式碼:CSS Selector 是學一次就會的技能,比寫 Python 簡單 10 倍
  2. 內建排程:Schedule Trigger 直接設定每天跑,不需要寫 cron job
  3. 完整生態:擷取完直接寫 Google Sheets、發 LINE 通知、存資料庫,一條龍搞定

我的觀察:n8n 爬蟲不是要取代 Python,而是降低門檻。你不需要花兩週學 Python 才能追蹤一個書榜。對 80% 的爬蟲需求(靜態網頁、表格資料、排行榜),n8n 完全夠用。


💡 Alex 的觀察:n8n 在資料收集生態中的定位

這邊我要分享一個比較宏觀的觀察。

資料收集(Data Collection)這件事,很多人直覺想到「爬蟲」,但其實有很多不同的方法。關鍵是選對工具做對事:

資料來源類型最佳工具原因
有 API 的服務n8n HTTP Request + Auth最穩定、最合規
靜態網頁表格n8n HTML Extract簡單直覺、免程式碼
JavaScript 渲染頁面Puppeteer / Playwright需要執行 JS 才能拿到資料
大量頁面(萬頁以上)Scrapy / Apify分散式爬取、效能優先
需要登入的頁面Playwright + Cookie模擬瀏覽器行為

我的觀察是:80% 的人需要的「爬蟲」其實不需要真正的爬蟲框架。一個 HTTP Request + HTML Extract 就能搞定。只有當你需要爬取上萬頁、或是面對 JavaScript 重度渲染的 SPA 網站時,才需要搬出 Python 或 Apify。

這也是 n8n 的核心理念——用最簡單的方式解決 80% 的問題

另外要特別提醒的是合規性問題。爬蟲本身不違法,但不尊重網站規則可能會有問題:

  • 遵守 robots.txt 的限制
  • 控制爬取頻率(不要對伺服器造成負擔)
  • 不要爬取個人隱私資料
  • 確認網站的 Terms of Service

第一次沒做好或是聽不懂,代表你是正常人!爬蟲聽起來很技術,但 n8n 把它變得很直覺。


🔧 實戰教學:6 步驟打造熱銷書榜爬蟲工作流

接下來進入實作環節。這個工作流的完整流程是:

Schedule Trigger → HTTP Request 擷取 HTML → HTML Extract 解析資料 → Set 整理欄位 → Google Sheets 儲存 → LINE/Email 通知

前置準備

  1. n8n 環境:本機或雲端皆可(參考 n8n 零基礎教學
  2. 目標網站 URL:以博客來暢銷書排行榜為例
  3. Google Sheets:用來存放擷取結果
  4. Chrome 瀏覽器:用開發者工具找 CSS Selector

Step 1:設定 Schedule Trigger(排程觸發)

第一步是設定排程,讓工作流每天自動執行。

設定方式:

  • Trigger Interval: Days
  • Hour: 7(早上 7 點,書榜通常在凌晨更新)
  • Timezone: Asia/Taipei
Schedule Trigger
├── Mode: Every Day
├── Hour: 7
└── Timezone: Asia/Taipei

如果你只是要測試,先用 Manual Trigger(手動觸發),確認工作流正常後再改成 Schedule。

Step 2:HTTP Request 擷取網頁 HTML

這是爬蟲的第一步——把目標網頁的 HTML 原始碼抓下來。

HTTP Request 節點設定:

設定項說明
MethodGET讀取網頁用 GET
URLhttps://www.books.com.tw/web/sys_saletopb/books博客來暢銷榜(範例)
Response FormatString取得原始 HTML
Options → Timeout1000010 秒逾時
Options → HeadersUser-Agent: Mozilla/5.0…模擬瀏覽器請求

這邊要特別注意:一定要設定 User-Agent。很多網站會封鎖沒有 User-Agent 的請求。加上一個正常的瀏覽器 User-Agent 就能解決大部分 403 Forbidden 問題。

Headers:
  User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36

Step 3:HTML Extract 解析書榜資料

拿到 HTML 之後,接下來要用 HTML Extract 節點 搭配 CSS Selector 把我們要的資料「撈出來」。

如何找到正確的 CSS Selector?

  1. 打開 Chrome,到目標網頁
  2. 右鍵點擊你要擷取的元素(例如書名)
  3. 選擇「檢查」(Inspect)
  4. 在 Elements 面板中找到對應的 HTML 元素
  5. 右鍵 → Copy → Copy selector

HTML Extract 節點設定範例:

擷取欄位CSS SelectorExtraction Type
書名.item .餐name h4 aText
作者.item .author aText
價格.item .price .price_aText
排名.item .noText
書籍連結.item .餐name h4 aAttribute (href)

重點來了:CSS Selector 是這個工作流的核心技能。你不需要學很深,只要記住幾個基本的:

  • .class-name — 選取 class
  • #id-name — 選取 id
  • div > p — 選取直接子元素
  • div p — 選取所有後代元素
  • :nth-child(n) — 選取第 n 個

如果你對 CSS Selector 不熟悉,也可以參考 n8n HTTP Request 與 Webhook 完整教學 裡面有更基礎的 HTML 概念說明。

Step 4:Set 節點整理欄位格式

HTML Extract 擷取出來的資料通常需要清洗。比如價格可能是 $350元,但你只想要數字 350

Set 節點設定範例:

// 清洗價格(移除 $ 和 元)
clean_price = {{ $json.價格.replace(/[$元,]/g, '') }}

// 清洗排名(只保留數字)
clean_rank = {{ $json.排名.replace(/[^0-9]/g, '') }}

// 加上擷取日期
crawl_date = {{ $now.format('YYYY-MM-DD') }}

// 組合完整 URL
full_url = {{ 'https://www.books.com.tw' + $json.書籍連結 }}

整理後的資料結構:

欄位範例值
排名1
書名AI 時代的生存指南
作者某某某
價格350
連結https://www.books.com.tw/products/
擷取日期2026-02-11

Step 5:Google Sheets 儲存結果

整理好的資料寫入 Google Sheets,方便後續分析。

Google Sheets 節點設定:

  • Operation: Append Row
  • Sheet: 書榜追蹤(每日新增一筆)
  • Columns: 排名、書名、作者、價格、連結、擷取日期

Google Sheets 結構建議:

Sheet 1: 每日排行 (Append)
| 日期 | 排名 | 書名 | 作者 | 價格 | 連結 |

Sheet 2: 排名趨勢 (Pivot Table)
| 書名 | 1/1排名 | 1/2排名 | 1/3排名 | 趨勢 |

這邊要特別注意:用 Append Row 而不是 Update Row。因為我們要保留每天的歷史紀錄,這樣才能分析排名趨勢。

Google Sheets 認證的詳細步驟可以參考 Google OAuth 設定教學

Step 6:異常通知(可選)

最後加一個通知機制,當爬蟲失敗時通知你。

Error Trigger 節點LINE/Email 通知

Error 情況:
1. HTTP 403 Forbidden → 網站可能更新了反爬機制
2. HTML 結構變更 → CSS Selector 可能需要更新
3. 連線逾時 → 網站暫時無法存取

不用一次學完,慢慢來比較快。先把 HTTP Request + HTML Extract 跑通,確認能抓到資料,再慢慢加上 Set 清洗和 Google Sheets 儲存。


📊 比較分析:n8n 爬蟲 vs Python vs Apify vs Make

比較項目n8nPython (BeautifulSoup)ApifyMake (Integromat)
學習門檻低(拖拉式)高(需會 Python)中(有模板)低(拖拉式)
程式碼不需要需要寫可用模板不需要
靜態網頁完美支援完美支援完美支援支援
JavaScript 渲染不支援需 Selenium原生支援不支援
排程功能內建需自己寫 cron內建內建
錯誤處理拖拉設定需自己寫內建拖拉設定
資料儲存直接連 Google Sheets需自己寫內建資料集直接連 Google Sheets
費用$0(自架)$0$49/月起$10.59/月起
大量爬取適合(< 1000 頁/天)極佳(無限)極佳(分散式)受限(執行次數)
反爬對策基本(Header 設定)完整(Proxy、Captcha)完整(Proxy Pool)基本
最適合日常監測、簡單擷取複雜爬蟲、大量資料商業級爬蟲簡單擷取

我的結論

  • 每天爬 1-3 個網站、擷取表格/排行榜:n8n 是最佳選擇,零成本、零程式碼
  • 需要爬 JavaScript 渲染頁面:用 Python + Playwright,或直接用 Apify
  • 大量爬取(上萬頁):Python Scrapy 或 Apify,n8n 的 HTTP Request 不適合高頻爬取
  • 已經會 Python 又需要複雜邏輯:直接寫 Python,然後用 n8n 的 Execute Command 節點觸發

簡單來說:n8n 不是最強的爬蟲工具,但它是最容易上手、且一站式整合最完整的


🏢 進階應用場景

場景一:內容行銷選題

  • 目標:追蹤技術書籍排名,找出上升趨勢的主題
  • 工作流:每日爬取 → Google Sheets → 每週用 n8n 的 Code 節點計算排名變化 → 上升超過 5 名的書籍自動標記
  • 產出:每週一份「趨勢主題報告」,做為 YouTube 影片選題參考

場景二:電商競品監控

  • 目標:追蹤競品在各平台的價格變化
  • 工作流:定時爬取蝦皮/MOMO/PChome 的特定商品頁 → 比價 → 價格低於閾值時通知
  • 注意:大型電商平台的反爬機制較嚴格,建議控制在每天 1-2 次

場景三:新聞摘要自動化

  • 目標:每天早上自動擷取特定媒體的頭條新聞
  • 工作流:HTTP Request 擷取新聞列表頁 → HTML Extract 取得標題和摘要 → 整理後用 LINE 推送每日新聞摘要
  • 延伸:搭配 n8n RSS 新聞摘要 做更完整的新聞監測

✅ 重點整理

  1. n8n 爬蟲 = HTTP Request + HTML Extract + Set——三個節點就能完成 80% 的網頁資料擷取需求
  2. CSS Selector 是核心技能——用 Chrome 開發者工具「右鍵 → 檢查 → Copy Selector」是最快的學習路徑
  3. 一定要設定 User-Agent Header——沒有 User-Agent 是被 403 封鎖的第一大原因
  4. 用 Set 節點清洗資料——正規表達式(Regex)是你的好朋友,replace(/[^0-9]/g, '') 可以解決大部分格式問題
  5. Google Sheets 用 Append Row——保留每日歷史紀錄,才能分析趨勢變化
  6. 合規爬蟲很重要——遵守 robots.txt、控制頻率、不爬個資
  7. n8n 適合日常監測,不適合大量爬取——超過 1000 頁/天的需求,考慮 Python 或 Apify

❓ 常見問題 FAQ

Q1: n8n 爬蟲會被網站封鎖嗎?怎麼避免?

A: 會,如果你不注意的話。避免被封鎖的關鍵做法:

  1. 設定 User-Agent:模擬正常瀏覽器的請求,這是最基本的
  2. 控制頻率:每日 1-2 次就好,不要每分鐘爬一次
  3. 遵守 robots.txt:在目標 URL 後加 /robots.txt 查看允許爬取的路徑
  4. 加入延遲:如果需要爬多頁,在 n8n 的 Wait 節點加入 2-5 秒的隨機延遲
  5. 不要爬取敏感資料:個人資料、登入後的內容,這些不該爬

大部分書榜、新聞網站只要控制好頻率(每天 1 次),加上正確的 User-Agent,基本上不會有問題。

Q2: 如何解析複雜的 HTML 結構?CSS Selector 寫不出來怎麼辦?

A: 這是初學者最常遇到的問題。我的建議是用「三步驟定位法」:

  1. Chrome 開發者工具:右鍵點擊目標元素 → 檢查 → Elements 面板會自動跳到對應的 HTML
  2. Copy Selector:右鍵 HTML 元素 → Copy → Copy selector,Chrome 會自動生成 CSS Selector
  3. 在 n8n 測試:把 Selector 貼到 HTML Extract 節點,手動執行看結果是否正確

如果 Chrome 自動生成的 Selector 太長或太脆弱,可以手動簡化。例如 Chrome 可能給你 #main > div:nth-child(3) > ul > li:nth-child(1) > h3 > a,但其實 .book-title a 就夠了。

進階技巧:如果實在找不到,把 HTML 片段貼給 ChatGPT,請它幫你寫 CSS Selector,準確率很高。

Q3: 可以擷取需要登入的網站嗎?

A: 技術上可以,但比較複雜,而且要注意合規性:

方法一:Cookie 認證

  1. 先在瀏覽器登入目標網站
  2. 用開發者工具 → Network → 找到 Cookie
  3. 在 n8n HTTP Request 的 Headers 加入 Cookie

方法二:API 存取

  • 很多需要登入的網站其實有 API(看 Network 面板的 XHR 請求)
  • 直接呼叫 API 比爬 HTML 更穩定

方法三:n8n + Headless Browser(進階)

  • 用 n8n 的 Execute Command 節點搭配 Puppeteer
  • 可以模擬完整的瀏覽器行為,包括登入

我的建議:如果目標網站有 API,優先用 API。爬取登入後的內容要特別注意 Terms of Service。

Q4: 網站改版後 CSS Selector 失效怎麼辦?

A: 這是所有爬蟲都會遇到的問題,不只是 n8n。應對策略:

  1. 加入 Error Handling:在 n8n 工作流加上 Error Trigger,當 HTML Extract 回傳空值時自動通知你
  2. 用穩定的 Selector:優先用 id 和語意化的 class,避免用 nth-child 這種位置依賴的 Selector
  3. 定期檢查:每週看一下 Google Sheets 的資料是否正常
  4. 快速修復:收到通知後,用 Chrome 開發者工具重新找 Selector,通常 5 分鐘就能修好

每個高手都是從新手開始的。爬蟲壞掉是正常的,修好它就是你的成長。

Q5: n8n 爬蟲的效能極限在哪裡?

A: n8n 自架版的爬蟲效能取決於兩個因素:

伺服器規格:

  • 一般 VPS(2 核 4GB):每次可爬取 100-200 頁,足夠日常監測
  • 進階 VPS(4 核 8GB):每次可爬取 500-1000 頁

目標網站限制:

  • 大部分網站的 Rate Limit 是每分鐘 60 請求
  • 書榜、新聞這類公開頁面通常更寬鬆

我的建議:如果你的需求是每天爬 3-5 個網站、各擷取 20-50 筆資料,n8n 綽綽有餘。超過 1000 頁/天的需求,就該考慮 Apify 或 Python Scrapy 了。

n8n 的定位是「自動化平台」而不是「爬蟲框架」。它的強項在於整合——爬完資料之後的分析、儲存、通知這些後續處理,n8n 比任何純爬蟲工具都方便。


🎯 下一步行動

🎓 想更有系統地學會這些技巧?AI 職場工作術(雲端方程式 Cloud F1 旗艦課程) 看看完整的實作路徑。

如果你看完這篇教學,想動手打造自己的網頁爬蟲工作流,建議按照以下步驟:

  1. 選一個目標網站:先從簡單的公開排行榜開始(例如書榜、電影榜)
  2. 學會 CSS Selector:打開 Chrome 開發者工具,練習用「右鍵 → 檢查 → Copy Selector」
  3. 建立基本工作流:HTTP Request → HTML Extract → 手動執行,確認能抓到資料
  4. 加上儲存和通知:Google Sheets + Schedule Trigger + Error 通知
  5. 擴展到其他場景:新聞監測、電商比價、招聘追蹤

先求大概懂,再開始用,最後才能做成功!

想跟其他學員一起學、一起討論爬蟲技巧?

  • 💬 加入學習社群:Skool 雲端方程式 Cloud F1(免費加入,和 500+ 學員一起學)
  • 📧 訂閱電子報:每週收到最新 AI 自動化技巧

希望這篇對你有幫助!有問題歡迎在下面留言。


🔗 相關資源


本文改編自 n8n 課程模組(lab爬蟲-熱銷書榜整理),由 Alex Hsieh 撰寫。最後更新:2026-02-11

想把這篇學到的用進日常工作?

「AI 職場工作術」課程把這類實戰經驗整理成一步步的教學,帶你系統化練出跟 AI 協作的產能。

看 AI 職場工作術課程 →

本文作者:Alex Hsieh,SRE / DevOps 背景出身,現為企業 AI 導入顧問,也是「AI 相談室」課程講師。專注把 AI 自動化真正落地到企業日常流程,而不是停留在 Demo。

目錄
  1. 專業導讀:n8n 爬蟲實戰——自動擷取熱銷書榜
  2. 你將學到
  3. 🎯 什麼是 n8n 網頁爬蟲?
  4. 💡 為什麼用 n8n 做爬蟲而不是寫 Python?
  5. n8n 爬蟲的三大優勢
  6. 💡 Alex 的觀察:n8n 在資料收集生態中的定位
  7. 🔧 實戰教學:6 步驟打造熱銷書榜爬蟲工作流
  8. 前置準備
  9. Step 1:設定 Schedule Trigger(排程觸發)
  10. Step 2:HTTP Request 擷取網頁 HTML
  11. Step 3:HTML Extract 解析書榜資料
  12. Step 4:Set 節點整理欄位格式
  13. Step 5:Google Sheets 儲存結果
  14. Step 6:異常通知(可選)
  15. 📊 比較分析:n8n 爬蟲 vs Python vs Apify vs Make
  16. 🏢 進階應用場景
  17. 場景一:內容行銷選題
  18. 場景二:電商競品監控
  19. 場景三:新聞摘要自動化
  20. ✅ 重點整理
  21. ❓ 常見問題 FAQ
  22. Q1: n8n 爬蟲會被網站封鎖嗎?怎麼避免?
  23. Q2: 如何解析複雜的 HTML 結構?CSS Selector 寫不出來怎麼辦?
  24. Q3: 可以擷取需要登入的網站嗎?
  25. Q4: 網站改版後 CSS Selector 失效怎麼辦?
  26. Q5: n8n 爬蟲的效能極限在哪裡?
  27. 🎯 下一步行動
  28. 🔗 相關資源