文章 / AI 自動化

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

用 n8n 打造網頁爬蟲工作流!自動擷取博客來熱銷書榜,CSS Selector 解析 HTML,整理成 Google Sheets 結構化報表。含完整節點設定與合規注意事項。

專業導讀: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 節點設定:

設定項 值 說明
Method GET 讀取網頁用 GET
URL https://www.books.com.tw/web/sys_saletopb/books 博客來暢銷榜(範例)
Response Format String 取得原始 HTML
Options → Timeout 10000 10 秒逾時
Options → Headers User-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 Selector Extraction Type
書名 .item .餐name h4 a Text
作者 .item .author a Text
價格 .item .price .price_a Text
排名 .item .no Text
書籍連結 .item .餐name h4 a Attribute (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

比較項目 n8n Python (BeautifulSoup) Apify Make (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 比任何純爬蟲工具都方便。


🎯 下一步行動

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

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

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

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

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

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


🔗 相關資源


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

新文章與模板通知

延伸閱讀

不確定 AI 該從哪裡開始?

兩小時免費 AI 健檢:我們一起找出你公司最高 ROI 的切入點,帶走一份可執行的評估。