iT邦幫忙

2025 iThome 鐵人賽

DAY 28
0
DevOps

n8n x AI自動化之新手村系列 第 28

Day28 Apify 爬蟲 -google map

  • 分享至 

  • xImage
  •  

在前一篇文章,學到如何用firecrawl來爬Threads的探店文章並存進Notion。但因為他只可以抓500次的網頁,用完就沒了,如果想要每個月都有免費額度去爬蟲的話,就可以使用到另一個爬蟲工具-Apify。今天會在n8n實作兩個Apify的抓取方式-HTTP Request、Apify 節點(新出的)

什麼是Apify

是一個雲端爬蟲與自動化平台,核心概念是提供各種「Actor」(預先寫好的爬蟲/自動化腳本),擁有超過 4,000 款現成 Actors,涵蓋 Google Maps、Instagram、Titok 等各大網站。使用者只要輸入參數,就能在 Apify 平台上自動執行並產生結果。也就是說它已經把繁瑣的爬蟲程式寫作過程封裝好了,我們只需要關心要「輸入什麼」、「輸出什麼」。它的執行後的結果會以 JSON、CSV 等格式輸出,所以也非常方便與其他系統整合。

FireCrawl vs Apify

  • Apify
    • 是一個 雲端爬蟲平台 + 自動化工具。
    • 提供各種現成的「Actor」(小型應用程式,通常是爬蟲或自動化任務)。
    • 使用者可以直接使用別人寫好的爬蟲,也能自己寫 JavaScript / Python 來部署在平台上。
    • 側重在規模化爬取、API 輸出、任務排程。
    • 適用場景**:Google Map 店家清單、電商商品爬取、定期跑任務、整合資料庫**
  • Firecrawl
    • 偏向開發者工具 / API,主要專注在從網頁擷取乾淨的內容 (Content Extraction),例如Markdown
    • 它的特色是能自動過濾掉廣告、導航列,只留下主體文章或重點資訊。
    • 側重在 語意提取、乾淨資料輸出,方便後續做 AI 處理(像摘要、分析)。
    • 適用場景: AI 訓練語料、文章摘要、從網頁快速提取乾淨文字

實作流程

前置作業

  1. 前往Apify網頁 註冊
  2. 選擇要的Actor
  3. 這裡選擇google map 只要輸入想要查詢的東西、選擇地區、語言或是一些的功能
    https://ithelp.ithome.com.tw/upload/images/20250908/20168759GwBnXRydgN.png
  4. 點選start就可以直接在網頁看到結果,抓到的資訊非常豐富詳細
    https://ithelp.ithome.com.tw/upload/images/20250908/201687592epfPg9y7T.png

n8n實作
使用HTTP Request
- 主要優點是更靈活,可以完全客製化 API 請求,所以對於Apify API使用格式要有一定的了解。
https://ithelp.ithome.com.tw/upload/images/20250908/2016875957jU8FElTF.png

  1. 建立HTTP Request 結點
    1. 設定method 為 POST
    2. 點選Apify網頁中的 API endpoints 選擇【Run Actor】,將該URL複製下來,貼到n8n設定頁面
    3. 複製Apify網頁中Input的JSON語句貼到n8n
      https://ithelp.ithome.com.tw/upload/images/20250908/20168759SMWjhHwfXF.png
  2. 建立HTTP Request 結點
    1. 設定method 為 GET
    2. API endpoints 選擇【Get last run dataset items】,將該URL複製下來,貼到n8n設定頁面
  3. 建立edit field節點,編輯想要的資訊
  4. 建立code節點,因為notion欄位類型比較有限,不能直接把「陣列物件」(多天營業時間)塞進去所以需要先整理成文字格式
    return items.map(item => {
      // 營業時間:若沒有則設為空陣列
      const hours = item.json['營業時間'] || [];
    
      // 把陣列轉成「星期:時間」格式的多行文字
      const formatted = hours.map(h => `${h.day}:${h.hours}`).join("\n");
    
      // 輸出一個新的欄位,給 Notion 的文字欄位使用
      item.json["營業時間_text"] = formatted;
    
      // 介紹:若為null,改為「暫無介紹」
      let description = item.json['介紹'];
      if (typeof description !== "string" || description.trim() === "") {
        description = "暫無介紹";
      }
      item.json['介紹'] = description;
    
      return item;
    });
    
  5. 建立notion節點 功能為create database page
    1. 選擇database和對應欄位輸入

成果

  • Museum
    https://ithelp.ithome.com.tw/upload/images/20250908/20168759HI5sVDWyGX.png

使用Apify 節點
- 適合新手、想要快速上手的人,因為介面友善,直接選 Actor、輸入參數就好
- 它會自動處理 API 認證與回傳格式,省下大量設定時間。
https://ithelp.ithome.com.tw/upload/images/20250908/20168759rJFoSVcJlq.png

  1. 建立Apify節點,功能選擇RUN actor
    1. 在Apify網站取得自己的API Key並到n8n作連接
    2. 貼上已輸入好想要查詢的東西、選擇地區、語言等地apify網址
    3. 貼上JSON
      https://ithelp.ithome.com.tw/upload/images/20250908/20168759ePtdB7Dvza.png
  2. 建立Apify節點,功能選擇get dataset items
    1. 在左邊的input找到Dataset ID貼到欄位
      https://ithelp.ithome.com.tw/upload/images/20250908/20168759kNfy9LGGg7.jpg
  3. 接下來的設定大致相同,只要將資料格式整理成可以存進Notion欄位就可以了

成果

  • Brunch
    https://ithelp.ithome.com.tw/upload/images/20250908/20168759PHcjipnQc3.png

資料來源

https://apify.com/
https://thunderbit.com/zh-Hant/blog/apify-review-and-alternative
https://tenten.co/learning/firecrawl-guide/
https://youtu.be/gZ_RLC25gCw?si=Dc13WDgOkrZ6pC-2
https://youtu.be/xsRtBCcskMA?si=_MRUZDCcP_zjaz23


上一篇
Day27 firecrawl 爬蟲-探店存進notion
系列文
n8n x AI自動化之新手村28
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言