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 │
└─────────────────────────────────────────────┘
核心技術原理:
- CDP 模式(推薦):透過 Chrome DevTools Protocol 連線使用者已有的 Chrome 瀏覽器,複用真實瀏覽器的 Cookie、擴充功能和瀏覽歷史,反偵測效果最佳
- 簽名複用:利用保留登入狀態的瀏覽器上下文環境,透過 JS 運算式直接獲取平台簽名參數,無需逆向加密演算法
- 登入狀態快取:首次掃碼登入後儲存 Cookie,後續執行自動複用,避免重複登入
4. 安裝與快速上手
4.1 環境準備
# 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:
- 安裝 Chrome >= 144
- 網址列輸入
chrome://inspect/#remote-debugging - 勾選 "Allow remote debugging for this browser instance"
- 確認顯示
Server running at: 127.0.0.1:9222
如果不想用 CDP 模式,在 config/base_config.py 中設定 ENABLE_CDP_MODE = False。
4.3 首次執行
# 小紅書關鍵字搜尋(預設爬取 15 篇筆記)
uv run main.py --platform xhs --lt qrcode --type search
# 首次執行會彈出二維碼,用小紅書 APP 掃碼登入
# 登入狀態自動快取,後續無需重複掃碼
5. 核心設定詳解
config/base_config.py 是關鍵設定檔案,以下是常用設定項:
# 目標平台: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 小紅書採集
# 關鍵字搜尋筆記
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 抖音採集
# 搜尋影片
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 站採集
# 搜尋影片
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 微博 / 貼吧 / 知乎 / 快手
# 微博
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 | 企業級 | 完整的關聯式資料庫支援 |
# 切換到 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 視覺化操作
# 終端機 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 代理池設定
大規模採集時建議啟用代理池:
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 併發與頻率控制
# 併發數(謹慎設定,過高易觸發風控)
MAX_CONCURRENCY_NUM = 1
# 每個關鍵字最大採集數
CRAWLER_MAX_NOTES_COUNT = 50
# 翻頁起始位置
START_PAGE = 1
8.4 評論詞雲產生
MediaCrawler 內建評論詞雲功能,可自動產生視覺化詞雲圖:
# 在 base_config.py 中開啟
# 需要先安裝 wordcloud 等相依套件
ENABLE_WORD_CLOUD = True
9. 合規性與法律風險提示
重要提醒:使用 MediaCrawler 前請務必了解以下風險:
- 法律合規:遵守《網路安全法》《資料安全法》《個人資訊保護法》,不得用於商業用途
- 平台規則:尊重各平台 robots.txt 和使用者協議,避免大規模爬取
- 頻率控制:合理控制請求頻率,不要給平台造成負擔
- 資料用途:僅限學習和研究目的,不得用於非法用途
- 隱私保護:不得爬取和傳播他人個人隱私資訊
參考:爬蟲違法違規案件合集
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 是學習社交媒體資料採集技術的最佳起點。但請務必在合法合規的前提下使用,尊重平台規則和使用者隱私。