1. MediaCrawler 是什麼?

MediaCrawler 是目前最全面的中文社交媒體開源爬蟲工具,GitHub 星標超過 64,000,由開發者 NanmiCoder 維護。它基於 Python + Playwright 瀏覽器自動化框架,透過保留登入狀態的方式直接呼叫平台 API,無需逆向複雜的 JS 加密演算法,大幅降低了技術門檻。

核心定位:面向資料分析師、輿情研究人員和內容運營者的學習工具,支援一鍵採集 7 大中文社交平台的公開內容資料。

與 Crawl4AI 這類通用網頁爬蟲不同,MediaCrawler 專注於中文社交媒體平台,內建了各平台的簽名邏輯和資料解析規則,開箱即用。如果你需要採集海外平台資料,可以看看 Wiseflow 深度解析。

2. 支援的 7 大平台與功能矩陣

平台 關鍵字搜尋 指定貼文爬取 二級評論 創作者主頁 登入狀態快取 IP 代理池 評論詞雲
小紅書 ✅ ✅ ✅ ✅ ✅ ✅ ✅
抖音 ✅ ✅ ✅ ✅ ✅ ✅ ✅
快手 ✅ ✅ ✅ ✅ ✅ ✅ ✅
B 站 ✅ ✅ ✅ ✅ ✅ ✅ ✅
微博 ✅ ✅ ✅ ✅ ✅ ✅ ✅
貼吧 ✅ ✅ ✅ ✅ ✅ ✅ ✅
知乎 ✅ ✅ ✅ ✅ ✅ ✅ ✅

七個平台的功能支援完全一致——這是 MediaCrawler 最大的架構優勢:統一的介面設計,切換平台只需改一個參數。

3. 技術架構解析

MediaCrawler 的技術棧設計圍繞「降低反偵測風險」展開:

┌─────────────────────────────────────────────┐
│              MediaCrawler 架構               │
├─────────────────────────────────────────────┤
│  使用者層    CLI 命令列 / WebUI 視覺化介面     │
├─────────────────────────────────────────────┤
│  排程層    平台排程器 → 統一爬蟲介面           │
├─────────────────────────────────────────────┤
│  執行層    Playwright (CDP 模式)              │
│           ├─ 登入狀態管理 (QR/Phone/Cookie)    │
│           ├─ JS 簽名計算 (複用瀏覽器上下文)    │
│           └─ 反偵測 (真實瀏覽器指紋)           │
├─────────────────────────────────────────────┤
│  資料層    CSV / JSON / JSONL / Excel         │
│           SQLite / MySQL / PostgreSQL         │
└─────────────────────────────────────────────┘

核心技術原理:

  1. CDP 模式(推薦):透過 Chrome DevTools Protocol 連線使用者已有的 Chrome 瀏覽器,複用真實瀏覽器的 Cookie、擴充功能和瀏覽歷史,反偵測效果最佳
  2. 簽名複用:利用保留登入狀態的瀏覽器上下文環境,透過 JS 運算式直接獲取平台簽名參數,無需逆向加密演算法
  3. 登入狀態快取:首次掃碼登入後儲存 Cookie,後續執行自動複用,避免重複登入

4. 安裝與快速上手

4.1 環境準備

BASH
# 1. 安裝 uv(推薦的 Python 套件管理器)
curl -LsSf https://astral.sh/uv/install.sh | sh

# 2. 確認 Node.js >= 16(抖音和知乎簽名需要)
node --version

# 3. 複製專案
git clone https://github.com/NanmiCoder/MediaCrawler.git
cd MediaCrawler

# 4. 安裝相依套件(uv 自動處理 Python 版本和相依套件)
uv sync

4.2 Chrome 瀏覽器設定(CDP 模式)

MediaCrawler 預設使用 CDP 模式,需要設定 Chrome:

  1. 安裝 Chrome >= 144
  2. 網址列輸入 chrome://inspect/#remote-debugging
  3. 勾選 "Allow remote debugging for this browser instance"
  4. 確認顯示 Server running at: 127.0.0.1:9222

如果不想用 CDP 模式,在 config/base_config.py 中設定 ENABLE_CDP_MODE = False。

4.3 首次執行

BASH
# 小紅書關鍵字搜尋(預設爬取 15 篇筆記)
uv run main.py --platform xhs --lt qrcode --type search

# 首次執行會彈出二維碼,用小紅書 APP 掃碼登入
# 登入狀態自動快取,後續無需重複掃碼

5. 核心設定詳解

config/base_config.py 是關鍵設定檔案,以下是常用設定項:

PYTHON
# 目標平台:xhs | dy | ks | bili | wb | tieba | zhihu
PLATFORM = "xhs"

# 搜尋關鍵字(英文逗號分隔)
KEYWORDS = "Python教學,程式設計副業,AI工具推薦"

# 登入方式:qrcode(掃碼)| phone(手機)| cookie(手動填寫)
LOGIN_TYPE = "qrcode"

# 爬取類型:search(關鍵字搜尋)| detail(指定貼文)| creator(創作者主頁)
CRAWLER_TYPE = "search"

# 資料儲存格式:csv | db | json | jsonl | sqlite | excel | postgres
SAVE_DATA_OPTION = "jsonl"

# 每個關鍵字最大爬取筆記數
CRAWLER_MAX_NOTES_COUNT = 15

# 併發數(建議保持 1,避免觸發風控)
MAX_CONCURRENCY_NUM = 1

# 是否開啟評論爬取
ENABLE_GET_COMMENTS = True

# 是否開啟二級評論
ENABLE_GET_SUB_COMMENTS = False

# IP 代理設定
ENABLE_IP_PROXY = False
IP_PROXY_PROVIDER_NAME = "kuaidaili"

6. 各平台採集實戰

6.1 小紅書採集

BASH
# 關鍵字搜尋筆記
uv run main.py --platform xhs --lt qrcode --type search

# 指定筆記 ID 爬取詳情
uv run main.py --platform xhs --lt qrcode --type detail

# 爬取創作者主頁所有筆記
uv run main.py --platform xhs --lt qrcode --type creator

小紅書資料欄位包括:筆記標題、正文內容、圖片列表、按讚數、收藏數、評論數、作者資訊、發佈時間等。

6.2 抖音採集

BASH
# 搜尋影片
uv run main.py --platform dy --lt qrcode --type search

# 指定影片 ID
uv run main.py --platform dy --lt qrcode --type detail

抖音採集需要 Node.js 環境用於簽名計算,資料欄位包括影片標題、播放位址、封面圖、按讚數、評論數、分享數等。

6.3 B 站採集

BASH
# 搜尋影片
uv run main.py --platform bili --lt qrcode --type search

# 指定影片(BV 號)
uv run main.py --platform bili --lt qrcode --type detail

B 站資料包含:影片標題、BV 號、播放量、彈幕數、按讚投幣收藏數、UP 主資訊等。

6.4 微博 / 貼吧 / 知乎 / 快手

BASH
# 微博
uv run main.py --platform wb --lt qrcode --type search

# 百度貼吧
uv run main.py --platform tieba --lt qrcode --type search

# 知乎
uv run main.py --platform zhihu --lt qrcode --type search

# 快手
uv run main.py --platform ks --lt qrcode --type search

所有平台命令格式一致,只需替換 --platform 參數。

7. 資料儲存與匯出

MediaCrawler 支援 7 種資料儲存格式,資料預設儲存在 data/ 目錄下:

格式 適用場景 特點
JSONL 日常採集(預設) 逐行寫入,中斷續採友好
CSV Excel 分析 表格軟體直接開啟
JSON 程式對接 標準格式,巢狀結構
Excel 報告輸出 帶格式的電子表格
SQLite 本機資料庫 輕量查詢,無需額外服務
MySQL 生產環境 支援去重,適合大規模資料
PostgreSQL 企業級 完整的關聯式資料庫支援
PYTHON
# 切換到 MySQL 儲存
SAVE_DATA_OPTION = "db"

# 在 db_config.py 中設定連線資訊
DB_HOST = "localhost"
DB_PORT = 3306
DB_USER = "root"
DB_PASSWORD = "your_password"
DB_NAME = "media_crawler"

8. 進階用法

8.1 WebUI 視覺化操作

BASH
# 終端機 1:啟動後端 API
uv run uvicorn api.main:app --port 8080 --reload

# 終端機 2:啟動前端(開發模式)
cd webui && npm install && npm run dev
# 存取 http://localhost:5173/

# 或者建置生產版本
cd webui && npm install && npm run build
# 只需啟動 API 伺服器,存取 http://localhost:8080

WebUI 提供視覺化設定介面,無需命令列即可操作爬蟲。

8.2 IP 代理池設定

大規模採集時建議啟用代理池:

PYTHON
ENABLE_IP_PROXY = True
IP_PROXY_POOL_COUNT = 2
IP_PROXY_PROVIDER_NAME = "kuaidaili"  # 支援 kuaidaili | wandouhttp | static

# 靜態代理設定
IP_PROXY_PROVIDER_NAME = "static"
STATIC_PROXY_URL = "http://user:password@your_proxy:port"

8.3 併發與頻率控制

PYTHON
# 併發數(謹慎設定,過高易觸發風控)
MAX_CONCURRENCY_NUM = 1

# 每個關鍵字最大採集數
CRAWLER_MAX_NOTES_COUNT = 50

# 翻頁起始位置
START_PAGE = 1

8.4 評論詞雲產生

MediaCrawler 內建評論詞雲功能,可自動產生視覺化詞雲圖:

PYTHON
# 在 base_config.py 中開啟
# 需要先安裝 wordcloud 等相依套件
ENABLE_WORD_CLOUD = True

9. 合規性與法律風險提示

重要提醒:使用 MediaCrawler 前請務必了解以下風險:

  1. 法律合規:遵守《網路安全法》《資料安全法》《個人資訊保護法》,不得用於商業用途
  2. 平台規則:尊重各平台 robots.txt 和使用者協議,避免大規模爬取
  3. 頻率控制:合理控制請求頻率,不要給平台造成負擔
  4. 資料用途:僅限學習和研究目的,不得用於非法用途
  5. 隱私保護:不得爬取和傳播他人個人隱私資訊

參考:爬蟲違法違規案件合集

10. 與其他工具對比

特性 MediaCrawler Snscrape Tweepy 自建爬蟲
目標平台 7 大中文平台 Twitter/X Twitter/X 任意平台
反偵測 CDP 真實瀏覽器 無 API 官方 需自行實作
登入管理 掃碼/手機/Cookie 無需 OAuth 手動實作
資料儲存 7 種格式 命令列輸出 JSON 自行實作
上手難度 低(設定即用) 低 中 高
評論抓取 ✅ 含二級評論 ❌ ✅ 需開發
維護狀態 活躍(64K+ Stars) 停滯 活躍 取決於自己

如果你需要通用網頁爬取能力,推薦 Crawl4AI;如果需要資訊流監控和 AI 摘要,推薦 Wiseflow。MediaCrawler 的獨特價值在於對中文社交媒體的深度適配。

11. 常見問題 FAQ

MediaCrawler 支援哪些 Python 版本?

推薦使用 Python 3.11,這是專案相依套件的主要測試版本。使用 uv 安裝時會自動匹配正確的 Python 版本。

掃碼登入失敗怎麼辦?

如果使用 CDP 模式,確保 Chrome 版本 >= 144 且已開啟遠端偵錯。如果反覆要求掃碼,關閉瀏覽器後重新開啟遠端偵錯。也可以嘗試切換到 HEADLESS = False 手動通過滑動驗證。

可以同時在多個平台爬取嗎?

可以,但建議串行執行。每次執行指定一個 --platform 參數,完成後再切換下一個平台。併發多平台容易觸發風控。

資料儲存在哪裡?

預設儲存在專案根目錄的 data/ 資料夾下,按平台名分子目錄。可以透過 SAVE_DATA_PATH 自訂儲存路徑。

MediaCrawler 可以商用嗎?

不可以。專案採用非商業學習許可證(NON-COMMERCIAL LEARNING LICENSE 1.1),明確禁止商業用途。如需商用,請聯絡作者獲取授權。

12. 總結

MediaCrawler 是目前最完善的中文社交媒體資料採集開源工具,64,000+ GitHub Stars 證明了它的實用價值。它的核心優勢在於:

  • 覆蓋面廣:7 大平台統一介面,切換零成本
  • 反偵測強:CDP 模式複用真實瀏覽器環境
  • 上手簡單:uv 一鍵安裝,設定即用
  • 儲存靈活:7 種資料格式適配不同場景
  • 社群活躍:持續更新,問題回應快

對於資料分析師、輿情研究人員和內容運營者來說,MediaCrawler 是學習社交媒體資料採集技術的最佳起點。但請務必在合法合規的前提下使用,尊重平台規則和使用者隱私。