n8n 爬蟲終極實戰:如何登入 Dcard,自動化抓取文章與留言 (2025 最新版)

dcard 爬蟲

在台灣的網路社群版圖中,Dcard 以其年輕、活躍的使用者群體,成為了觀察 Z 世代消費趨勢、品牌輿情與熱門話題的絕對前線。對於行銷人員、數據分析師、甚至是學術研究者來說,Dcard 上每日產出的海量文章與留言,無疑是一座蘊含無限洞察的金礦。

然而,這座金礦的入口,卻被一扇厚重的大門——「會員登入」——所守護。許多有價值的看板(如美妝版、穿搭版)與文章的完整內容,都必須在登入後才能瀏覽。這為自動化爬蟲帶來了巨大的挑戰。

你是否也曾想用 n8n 抓取 Dcard,卻不知如何處理複雜的登入機制與動態載入的內容?這篇文章將是你最完整的 Dcard 爬蟲終極實戰指南。我們將跳脫傳統爬蟲的思維框架,為你揭示一套結合 PuppeteerAPI 逆向工程 的混合戰術。

我們將手把手教你:

  1. 如何只登入一次,就取得能夠長期使用的 Session Cookies。
  2. 如何找出 Dcard 用來載入文章的內部隱藏 API
  3. 如何最終在 n8n 中,建立一個不需瀏覽器極度高效的爬蟲,來自動化抓取任何看板的最新文章。

為什麼要爬 Dcard?洞察 Z 世代的網路輿情與消費趨勢

在我們投入技術細節之前,先明確我們的目標。自動化抓取 Dcard 的數據,可以為你帶來巨大的商業價值:

  • 品牌輿情監控: 即時追蹤你的品牌或產品,在各大看板上的討論聲量與評價,並在出現負面口碑時,第一時間收到警報。
  • 市場趨勢分析: 透過長期追蹤特定看板(如理財版、3C 版)的熱門文章標題與關鍵字,洞察年輕世代最關心的話題與需求變化。
  • 競品研究: 分析競品在 Dcard 上的討論度、優缺點,作為自身產品優化與行銷策略的參考。
  • 內容行銷靈感: 從熱門文章與留言中,挖掘出使用者最真實的痛點與流行語,作為你內容創作的靈感來源。

專業爬蟲的混合戰術:Puppeteer 用於登入,API 用於抓取

面對像 Dcard 這樣一個現代化的動態網站 (SPA),如果試圖用 Puppeteer 來模擬所有操作(滾動、點擊、換頁),會非常緩慢且消耗資源。專業的爬蟲玩家,會採用一種更聰明、更高效的混合戰術:

  1. 分階段任務: 我們將整個任務拆解成「取得登入憑證」和「抓取內容」兩個完全獨立的階段。
  2. Puppeteer 只做一件事: 我們只在第一階段,使用 Puppeteer 來自動化登入,其唯一目的,就是為了獲取登入成功後,Dcard 伺服器發給我們的「通關密語 (Session Cookies)」。
  3. n8n 直接呼叫 API: 一旦我們擁有了 Session Cookies,我們就不再需要笨重的瀏覽器了。在第二階段,我們將扮演 Dcard 自己的前端 App,使用 n8n 的 HTTP Request 節點,直接呼叫 Dcard 用來載入文章的內部 API。這個過程極度快速、穩定,且回傳的是乾淨的 JSON 資料。
dcard 爬蟲

步驟一:使用 Puppeteer 獲取 Dcard 的「通關密語 (Session Cookies)」

這個工作流,你可能只需要執行一次,或是每隔一段時間(當 Cookie 過期時)才需要執行一次。

流程設計: Start -> Browserless (Run Custom Function)

  1. Browserless 節點的 Run Custom Function 中,貼上以下 Puppeteer 腳本:
    JavaScript
    // page 是 n8n 傳入的 Puppeteer 頁面物件

    // 1. 前往 Dcard 登入頁面
    await page.goto('https://www.dcard.tw/signin');

    // 2. 等待表單元素出現
    await page.waitForSelector('input[name="email"]');
    await page.waitForSelector('input[name="password"]');

    // 3. 填寫帳號密碼 (強烈建議從 n8n Credential 傳入)
    await page.type('input[name="email"]', 'YOUR_DCARD_EMAIL');
    await page.type('input[name="password"]', 'YOUR_DCARD_PASSWORD');

    // 4. 點擊登入按鈕並等待跳轉
    await Promise.all([ page.click('button[type="submit"]'), page.waitForNavigation(), ]);

    // 5. 確認登入成功 (例如,等待個人頭像出現)
    await page.waitForSelector('a[href="/my/profile"]');
    console.log('Login successful!');

    // 6. 提取所有 Cookies
    const cookies = await page.cookies();

    // 7. 將 Cookies 作為 JSON 回傳
    return { cookies: cookies };
  2. 執行工作流: 執行後,Browserless 節點的輸出,就是一個包含了 Dcard 所有 Session Cookies 的 JSON 陣列。
  3. 儲存 Cookies: 將這個完整的 JSON 陣列複製下來,儲存在一個安全的地方,例如 n8n 的 Static Data 或一個本地文字檔中。這是你未來所有 Dcard 爬蟲流程的「萬能鑰匙」。

步驟二:逆向工程 Dcard,找出隱藏的文章 API 端點

接下來,我們要成為一名 API 偵探,找出 Dcard 真正的文章 API。

  1. 登入 Dcard,並用你的 Chrome 瀏覽器前往你想爬取的看板,例如電影版 (https://www.dcard.tw/f/movie)。
  2. 按下 F12 打開開發者工具,切換到 Network 面板,並點擊 Fetch/XHR 篩選器。
  3. 重新整理頁面。你會在請求列表中,看到一個非常關鍵的請求,它的名稱通常看起來像這樣: posts?popular=true&limit=30
  4. 點擊這個請求,並檢視 Headers 分頁:
    • Request URL: https://www.dcard.tw/_api/posts?popular=true&limit=30 (這就是 API 端點!)
    • Request Method: GET
  5. 檢視 ResponsePreview 分頁,你會看到回傳的,正是文章列表的乾淨 JSON 資料!

步驟三:建立高效爬蟲,用 n8n 直接呼叫 Dcard API

現在,我們有了「通關密語 (Cookies)」和「秘密通道 (API Endpoint)」,可以開始建立我們真正高效的爬蟲了。

流程設計: Schedule -> Set (載入 Cookie) -> HTTP Request (呼叫 API) -> Google Sheets

  1. Schedule 節點: 設定你希望爬蟲執行的頻率,例如每天一次。
  2. Set 節點:
    • 建立一個名為 dcard_cookies 的欄位。
    • 將你在步驟一儲存的 Cookie JSON 陣列,完整地貼到 Value 欄位中。
  3. HTTP Request 節點:
    • URL: https://www.dcard.tw/_api/posts?limit=50&forum=movie (我們指定了 movie 看板,並將數量限制設為 50)。
    • Options > Header > Cookie (使用 Expression):JavaScript{{ $json.dcard_cookies.map(c => `${c.name}=${c.value}`).join('; ') }}
      • 解說: 這段重要的語法,會將我們儲存的 Cookie JSON 陣列,轉換成 HTTP Header 所需的 key=value; 字串格式。
    • Headers > Add Header: 記得也要加上偽裝的 User-Agent
  4. Google Sheets 節點:
    • HTTP Request 節點的回傳結果是一個 JSON 陣列,你可以直接將其連接到 Google Sheets 節點的 Append or Update 操作,輕鬆地將 id, title, excerpt, likeCount 等欄位寫入你的試算表中。

爬取 Dcard 的法律、道德紅線與最佳實踐

  • 尊重使用者隱私: Dcard 是一個真實的社群,其中包含了大量的個人情感與隱私。在進行任何數據抓取與分析時,請務必以最高標準,對用戶數據進行「去識別化」,絕不應儲存或分析任何可用於識別個人身份的資訊。
  • 遵守平台規範: 自動化抓取平台內容,可能違反 Dcard 的服務條款。請以負責任的態度,在合理的範圍內,出於學術研究或市場分析等正當目的使用這些技術,並將請求頻率降至最低,避免對 Dcard 伺服器造成不必要的負擔。
  • 帳號安全: 用於爬蟲的 Dcard 帳號,建議使用獨立的、非主要的帳號,並啟用兩步驟驗證,以防萬一。
dcard 爬蟲

結語

n8n 為我們提供了一套無與倫比的靈活工具,讓我們能夠透過「混合戰術」,應對像 Dcard 這樣複雜的現代化網站。透過將 Puppeteer 的「互動能力」與 HTTP Request 的「高效請求」相結合,我們得以在一次性的安全登入後,建立起一個能夠長期、穩定、且高效運作的自動化數據抓取流程。

這不僅僅是一個爬蟲教學,更是一種解決複雜自動化問題的思維模式:為正確的任務,選擇正確的工具。 將最耗費資源的瀏覽器模擬,限制在最小的必要範圍內,並在取得關鍵憑證後,回歸到最輕量、最快速的 API 直接通訊。這,就是專業自動化開發的精髓所在。

更多精選文章請參考

n8n 與 Zapier 比較:該選哪個?2025年最完整功能、費用、優缺點分析

開源自動化工具推薦:從工作流程到測試,找到最適合你的免費方案

n8n 發送 Email 超詳細教學:從 SMTP 設定到 Gmail 節點串接,一篇搞定!

n8n Notion 串接終極指南:2025 年打造自動化工作流程,效率翻倍!

【n8n 教學】最強 n8n 網頁爬蟲指南,免寫程式也能輕鬆抓取網站資料!

【n8n 教學全攻略】2025最新!從入門到串接實戰,打造你的自動化工作流

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *

返回頂端