抱歉,您的瀏覽器無法訪問本站
本頁面需要瀏覽器支持(啟用)JavaScript
了解詳情 >

上一章已經申請 Apify、複製 API token,並在 Store 找到 apify/instagram-scraper。這一章把這個 Actor 接到 n8n:安裝 Apify 社群節點、建立憑證,再用手動觸發抓下指定 Instagram 帳號的貼文,整理成後續節點好接的欄位。

1. 複製 Personal API token

若還沒有 Apify 帳號,先完成上一章的申請。已有帳號時,直接到主控台複製 token。

(1). 開啟 Apify 主控台。
(2). 左側選單點擊 Settings。
(3). 上方分頁切到 API & Integrations。
(4). 在 Personal API tokens 複製 Default API token。

token 的開頭是 apify_api_。把它存到記事本,下一步貼進 n8n。這組字串等同帳號的 API 金鑰,不要寫進公開筆記或截圖。

2. 安裝 Community Node

n8n 內建節點沒有 Apify。自架的 n8n(本系列部署在 Cloud Run)可以從社群套件安裝。

(1). 打開 n8n,左側選單點擊 Settings。
(2). 進入 Community nodes。
(3). 點擊 Install a community node。
(4). npm Package Name 搜尋並填入 @apify/n8n-nodes-apify。
(5). 勾選 I understand the risks of installing unverified code from a public source.。社群節點不是 n8n 官方審核過的程式,這一步是確認你知道套件來自公開的 npm。
(6). 點擊 Install。安裝完成後,節點面板才搜得到 Apify。

3. 建立 Apify 憑證

(1). 左側選單進入 Credentials。
(2). 點擊右上角 Create credential。
(3). 在 Add new credential 搜尋 Apify API,點進去。
(4). API Key 貼上第 1 節複製的 token。
(5). 儲存。之後 Apify 節點都選這筆憑證,不用每次重貼 token。

4. 準備 Instagram 爬蟲參數

回到 Apify Store,搜尋 apify/instagram-scraper,打開 Input → JSON example。這一章抓的是單一帳號的貼文,把網址與筆數改成下面這份。directUrls 是要爬的帳號,resultsLimit 限制最多回傳幾則貼文。

目標帳號:https://www.instagram.com/7u.foodie,最多 10 則。

1
2
3
4
5
6
7
8
9
10
{
"addParentData": false,
"directUrls": [
"https://www.instagram.com/7u.foodie"
],
"resultsLimit": 10,
"resultsType": "posts",
"searchLimit": 10,
"searchType": "hashtag"
}

resultsType 設為 posts,回來的每一筆是一則貼文。筆數先維持 10,確認欄位正確再加大;這個 Actor 依結果筆數計費,會從 Apify 額度扣除。

5. 建立 n8n workflow

新增一個工作流。節點順序是:手動觸發 → 執行 Actor 並取回資料集 → 整理欄位。

5.1 手動觸發

(1). 點擊畫布上的 +,搜尋 Manual Trigger 並加入。
(2). 這個節點不需要參數。之後按畫布上方的執行按鈕,工作流才會跑一次。

5.2 執行 Actor

(3). 從 Manual Trigger 拉出下一顆節點,搜尋 Apify。
(4). 選擇動作 Run an Actor and get dataset。這個動作會跑完 Actor,再把 dataset 裡的每一筆貼文送往下一個節點。
(5). Credential 選擇第 3 節建立的 Apify API。
(6). Actor Source 選擇 Apify Store Actors。
(7). From list 選擇 apify/instagram-scraper。
(8). Input JSON 貼上第 4 節的 JSON。

5.3 整理貼文欄位

Actor 回傳的欄位很多。用 Edit Fields(Set)只留下後面用得到的欄位,並把時間改成可讀的字串。

(9). 從 Apify 節點拉出下一顆節點,搜尋 Edit Fields 並加入。
(10). 依下表新增欄位。Name 填欄位名稱,Value 切到表達式後貼上右欄。

Name Type Value
post_id String {{ $json.id }}
type String {{ $json.type }}
username String {{ $json.ownerUsername }}
caption String {{ $json.caption }}
likes Number {{ $json.likesCount }}
comments Number {{ $json.commentsCount }}
hashtags String {{ $json.hashtags?.join(', ') }}
post_url String {{ $json.url }}
timestamp String {{ $json.timestamp.toDateTime().format('yyyy-MM-dd HH:mm:ss') }}
scrapedat String {{ $now.format('yyyy-MM-dd HH:mm:ss') }}

post_id 的名稱用純文字,不要在名稱前面加 =。hashtags 可能是空陣列,可選串接會把它收成逗號分隔的字串。timestamp 是貼文時間,scrapedat 是這次爬取的時間。

執行一次工作流。Apify 節點會列出最多 10 則貼文,Edit Fields 的輸出則只剩上面這 10 個欄位,之後可以再接到 Google Sheet 或其他節點。

6. 完整工作流

上面是手動觸發、執行 Actor 與整理欄位。完整工作流還接著寫入試算表、條件判斷、過濾、下載圖片與上傳檔案,JSON 放在 Gist,可在 n8n 選擇 Import from File 匯入。

完整工作流 JSON:開啟新分頁顯示:程式碼

留言