instracker.io logo
Instagram 分析指南
Instracker Team
2025-10-18

如何使用 AWS 抓取 Instagram 和 TikTok 的用戶帳戶

如何使用 AWS 抓取 Instagram 和 TikTok 的用戶帳戶

尋找利用 AWS 收集公開 Instagram 和 TikTok 帳戶資料的清晰合規方式?本指南為您提供一個簡單且適合生產使用的途徑。只針對公開頁面,穩定的輸送量、低成本、明確的運營準則。

適用對象

  • 需要可靠結構化公開資料的成長團隊和分析師。
  • 構建無需繁重瀏覽器自動化的 ETL 管道的工程師。
  • 驗證競爭對手和市場趨勢的產品團隊,規模適中。

法律和道德界限

僅收集公開頁面;不要繞過登入、權限或私人內容。

遵循平台條款和機器人指導;保持合理的速率和並發。

記錄業務目的,並保留審核證據以確保合規。

若需要登錄或複雜互動,請進行法律審查並在進行前添加風險控制。

架構概述(簡單且經驗證)

入口

API Gateway 暴露受控攝取端點並施加限制。

工作者

AWS Lambda (Python) 提取公開個人檔案並解析可見字段。

儲存

DynamoDB 用於結構化個人檔案快照;S3 用於原始頁面片段。

解耦

SQS 隊列吸收高峰;攝取和持久化保持獨立。

可觀察性

CloudWatch 指標/警報;如需可使用 Step Functions 協調。

為什麼這有效

  • 小型快速的 Lambda 保持冷啟動低並限制失敗。
  • 基於隊列的流程將突發轉為穩定工作負載。
  • DynamoDB 提供便宜的點查找和簡單的 upsert;S3 提供長期可追溯性。

資料模型快速參考

Instagram 個人檔案快照(範例)

{
  "username": "acme",
  "name": "Acme Studio",
  "followers": 12450,
  "following": 315,
  "bio": "Design, motion, and daily experiments",
  "external_url": "https://acme.example",
  "is_private": false,
  "last_seen_at": "2025-10-18T09:00:00Z",
  "etl_version": "v1"
}

TikTok 個人檔案快照(範例)

{
  "handle": "acme",
  "followerCount": 89214,
  "followingCount": 105,
  "heartCount": 124019,
  "bioLink": "https://acme.example",
  "region": "US",
  "last_seen_at": "2025-10-18T09:00:00Z",
  "etl_version": "v1"
}

限流和可靠性原則

每個域的併發上限;4xx/5xx 的指數退避。

重試三次後進入死信隊列(DLQ);1-2% 成功樣本存入 S3 作為審核。

透過 username/handle 的冪等 upsert;版本變更標記 etl_version

實施:Instagram(實際步驟)

步驟 1 — 輸入

提供 username 列表(CSV/表格)。透過 SQS 或排程觸發進行批處理。

步驟 2 — 提取

請求 https://www.instagram.com/{username}/ 公開頁面;解析可見的 JSON 或結構化 HTML 模塊。

步驟 3 — 解析

提取 nameusernamefollower_countfollowing_countbioexternal_urlis_private

步驟 4 — 儲存

Upsert 到 DynamoDB(PK=username)。將原始頁片段或 JSON 片段保存到 S3 以便審核。

步驟 5 — 更新

透過 CloudWatch 排程(例如,每日或每週)並進行擒縱以避免響應過激。

注意事項

  • 正規化計數;有些頁面隱藏或延遲數字。必要時回退到緩存值。
  • 在日誌中追蹤延遲和狀態:targetstatusduration_mserror_code
  • 尊重區域性的 CDN;調整超時和用戶代理以減少暫時性故障。

實施:TikTok(實際步驟)

步驟 1 — 輸入

提供 @handle 列表,如 https://www.tiktok.com/@{handle}

步驟 2 — 提取

訪問公開個人檔案頁面並解析可見的 JSON/結構化段落(A/B 或地區變體可能不同)。

步驟 3 — 解析

提取 idfollowerCountfollowingCountheartCountbioLinkregion

步驟 4 — 儲存

使用與 Instagram 相同的模式 — 結構化到 DynamoDB,原始片段到 S3

步驟 5 — 更新

安排更新加上事件驅動的復查;錯誤進入 DLQ 並警報。

注意事項

  • 小心處理字段存在情況;解析器需容忍遺失或重命名的欄位。
  • 去掉重複請求;在短時間內合併重複項。
  • 當錯誤率超過 2% 時警報;在通知中包含樣本負載以便快速排查。

管道和存儲設計

DynamoDB 表:profiles,以 pk = username|handle ,選填 sk = snapshot_ts 作為歷史。

若只需當前狀態,則對過時快照進行 TTL。

S3 布局:s3://bucket/raw/{platform}/{id}/{timestamp}.jsons3://bucket/parsed/{platform}/{id}/{timestamp}.json

使用對象標籤 platformregionetl_version 加速審核和生命週期政策。

監控和運營

指標:success_rateerror_rateduration_ms_p95requests_per_min

警報:每個平台和每個地區的閾值;僅當持續時觸發。

儀表板:按平台的磁貼;主要錯誤代碼;DLQ 深度;Lambda 並發量;成本估算。

成本和吞吐量(典型範圍)

輕負載併發:每次 Lambda 運行 150–450 毫秒;每月 10 萬個個人檔案在低成本地區和網絡。

優化順序:限制和緩存 > 隊列解耦 > 解析器容忍 > 僅在必要時考慮無頭瀏覽器。

品質檢查清單

僅限公開頁面;無驗證;不抓取私密資料。

併發上限和適時調整;指數退避。

每日清理 DLQ;每週審核 S3 样本。

每次更改都添加 etl_versiontimestamp 標籤。

常見陷阱

將動態 UI 當作保證 API;更喜好穩健解析可見 JSON 塊。

忽略地區/A-B 變體;總是對缺少字段進行防護。

過度使用無頭瀏覽器;簡單起步,僅在必要時添加。

FAQs

需要登入嗎?

不 — 此工作流程僅針對公開頁面。

可以收集評論/喜歡嗎?

可以,但需要分開工作負載:先處理個人檔案,後續單獨日程安排互動。

為什麼不使用繁重的 Selenium?

因為它更慢、更昂貴且脆弱。僅在渲染無法避免時使用。

相關工具和文章