1. Was ist MediaCrawler?
MediaCrawler ist das umfassendste Open-Source-Crawler-Tool für chinesische Social-Media-Plattformen, mit über 64.000 GitHub-Stars, gepflegt vom Entwickler NanmiCoder. Es basiert auf dem Python + Playwright-Browserautomatisierungs-Framework und ruft direkt die Plattform-APIs ab, indem es den Anmeldestatus beibehält, ohne komplexe JS-Verschlüsselungsalgorithmen reverse engineering betreiben zu müssen – was die technische Einstiegshürde erheblich senkt.
Kernpositionierung: Ein Lernwerkzeug für Datenanalysten, Meinungsforschende und Content-Operatoren, das die Ein-Klick-Erfassung öffentlicher Inhaltsdaten von 7 großen chinesischen Social-Media-Plattformen unterstützt.
Im Gegensatz zu allgemeinen Web-Crawlern wie Crawl4AI konzentriert sich MediaCrawler speziell auf chinesische Social-Media-Plattformen und enthält plattformspezifische Signaturlogik und Datenverarbeitungsregeln – sofort einsatzbereit. Wenn du Daten von internationalen Plattformen erfassen möchtest, schau dir die Wiseflow-Analyse an.
2. Unterstützte 7 Plattformen und Funktionsmatrix
| Plattform | Keyword-Suche | Bestimmte Posts | Unterkommentare | Creator-Profil | Anmeldestatus-Cache | IP-Proxy-Pool | Kommentar-Wortwolke |
|---|---|---|---|---|---|---|---|
| Xiaohongshu | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| Douyin | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| Kuaishou | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| Bilibili | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | |
| Tieba | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| Zhihu | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
Alle sieben Plattformen bieten identischen Funktionsumfang – das ist der größte architektonische Vorteil von MediaCrawler: Ein einheitliches Interface-Design, bei dem der Plattformwechsel nur einen Parameter ändert.
3. Technische Architektur im Detail
Die technische Gestaltung von MediaCrawler ist auf die „Minimierung des Erkennungsrisikos" ausgerichtet:
┌─────────────────────────────────────────────┐
│ MediaCrawler-Architektur │
├─────────────────────────────────────────────┤
│ Benutzerebene CLI / WebUI │
├─────────────────────────────────────────────┤
│ Steuerungsebene Plattform-Dispatcher → │
│ Einheitliche Crawler-Schnittstelle │
├─────────────────────────────────────────────┤
│ Ausführungsebene Playwright (CDP-Modus) │
│ ├─ Anmeldungsverwaltung (QR/Telefon/Cookie) │
│ ├─ JS-Signaturberechnung (Browser-Kontext) │
│ └─ Anti-Erkennung (Echte Browser-Fingerabdrücke) │
├─────────────────────────────────────────────┤
│ Datenebene CSV / JSON / JSONL / Excel │
│ SQLite / MySQL / PostgreSQL │
└─────────────────────────────────────────────┘
Kernprinzipien:
- CDP-Modus (empfohlen): Verbindet sich über das Chrome DevTools Protocol mit einem vorhandenen Chrome-Browser und nutzt echte Cookies, Erweiterungen und den Browserverlauf – optimale Anti-Erkennung
- Signatur-Wiederverwendung: Nutzt den Browser-Kontext mit gespeichertem Anmeldestatus, um Plattformsignatur-Parameter direkt über JS-Ausdrücke abzurufen, ohne Verschlüsselungsalgorithmen reverse engineeren zu müssen
- Anmeldestatus-Cache: Nach dem ersten QR-Code-Login werden Cookies gespeichert und bei nachfolgenden Ausführungen automatisch wiederverwendet
4. Installation und Schnellstart
4.1 Umgebung vorbereiten
# 1. uv installieren (empfohlener Python-Paketmanager)
curl -LsSf https://astral.sh/uv/install.sh | sh
# 2. Node.js >= 16 bestätigen (für Douyin- und Zhihu-Signaturen erforderlich)
node --version
# 3. Projekt klonen
git clone https://github.com/NanmiCoder/MediaCrawler.git
cd MediaCrawler
# 4. Abhängigkeiten installieren (uv verwaltet Python-Version und Abhängigkeiten automatisch)
uv sync
4.2 Chrome-Browser-Konfiguration (CDP-Modus)
MediaCrawler verwendet standardmäßig den CDP-Modus und benötigt eine Chrome-Konfiguration:
- Chrome >= 144 installieren
chrome://inspect/#remote-debuggingin der Adressleiste eingeben- "Allow remote debugging for this browser instance" aktivieren
- Bestätigen, dass
Server running at: 127.0.0.1:9222angezeigt wird
Wenn du den CDP-Modus nicht verwenden möchtest, setze ENABLE_CDP_MODE = False in config/base_config.py.
4.3 Erste Ausführung
# Xiaohongshu-Keyword-Suche (standardmäßig 15 Beiträge)
uv run main.py --platform xhs --lt qrcode --type search
# Beim ersten Start erscheint ein QR-Code – mit der Xiaohongshu-APP scannen
# Anmeldestatus wird automatisch gespeichert, kein erneutes Scannen nötig
5. Wichtige Konfigurationsoptionen
config/base_config.py ist die zentrale Konfigurationsdatei. Hier die wichtigsten Einstellungen:
# Zielplattform: xhs | dy | ks | bili | wb | tieba | zhihu
PLATFORM = "xhs"
# Suchbegriffe (durch englische Kommas getrennt)
KEYWORDS = "Python教程,编程副业,AI工具推荐"
# Anmeldemethode: qrcode (QR-Scan) | phone (Telefon) | cookie (manuell)
LOGIN_TYPE = "qrcode"
# Crawler-Typ: search (Keyword-Suche) | detail (bestimmter Post) | creator (Creator-Profil)
CRAWLER_TYPE = "search"
# Datenspeicherformat: csv | db | json | jsonl | sqlite | excel | postgres
SAVE_DATA_OPTION = "jsonl"
# Maximale Anzahl der Beiträge pro Keyword
CRAWLER_MAX_NOTES_COUNT = 15
# Parallelität (empfohlen: 1, um Risikosteuerung zu vermeiden)
MAX_CONCURRENCY_NUM = 1
# Kommentar-Crawling aktivieren
ENABLE_GET_COMMENTS = True
# Unterkommentare aktivieren
ENABLE_GET_SUB_COMMENTS = False
# IP-Proxy-Konfiguration
ENABLE_IP_PROXY = False
IP_PROXY_PROVIDER_NAME = "kuaidaili"
6. Plattformspezifische Erfassung
6.1 Xiaohongshu-Erfassung
# Keyword-Suche nach Beiträgen
uv run main.py --platform xhs --lt qrcode --type search
# Bestimmte Beitrags-ID für Details
uv run main.py --platform xhs --lt qrcode --type detail
# Alle Beiträge des Creator-Profils
uv run main.py --platform xhs --lt qrcode --type creator
Xiaohongshu-Datenfelder umfassen: Beitragstitel, Textinhalt, Bilderliste, Likes, Speicherungen, Kommentare, Autoreninformationen, Veröffentlichungszeitpunkt usw.
6.2 Douyin-Erfassung
# Video-Suche
uv run main.py --platform dy --lt qrcode --type search
# Bestimmte Video-ID
uv run main.py --platform dy --lt qrcode --type detail
Die Douyin-Erfassung benötigt eine Node.js-Umgebung für die Signaturberechnung. Datenfelder umfassen: Videotitel, Wiedergabe-URL, Vorschaubild, Likes, Kommentare, Shares usw.
6.3 Bilibili-Erfassung
# Video-Suche
uv run main.py --platform bili --lt qrcode --type search
# Bestimmtes Video (BV-Nummer)
uv run main.py --platform bili --lt qrcode --type detail
Bilibili-Daten umfassen: Videotitel, BV-Nummer, Aufrufe, Danmaku-Kommentare, Likes/Coins/Favoriten, UP-Master-Informationen usw.
6.4 Weibo / Tieba / Zhihu / Kuaishou
# Weibo
uv run main.py --platform wb --lt qrcode --type search
# Baidu Tieba
uv run main.py --platform tieba --lt qrcode --type search
# Zhihu
uv run main.py --platform zhihu --lt qrcode --type search
# Kuaishou
uv run main.py --platform ks --lt qrcode --type search
Das Befehlsformat ist für alle Plattformen identisch – nur der --platform-Parameter wird geändert.
7. Datenspeicherung und Export
MediaCrawler unterstützt 7 Speicherformate. Daten werden standardmäßig im data/-Verzeichnis gespeichert:
| Format | Anwendungsfall | Merkmale |
|---|---|---|
| JSONL | Tägliche Erfassung (Standard) | Zeilenweises Schreiben, fortsetzbar |
| CSV | Excel-Analyse | Direkt in Tabellenkalkulation öffnbar |
| JSON | Programm-Anbindung | Standardformat, verschachtelte Struktur |
| Excel | Berichtsausgabe | Formatierter Tabellenexport |
| SQLite | Lokale Datenbank | Leichte Abfragen, kein zusätzlicher Server |
| MySQL | Produktionsumgebung | Deduplizierung, für große Datenmengen |
| PostgreSQL | Enterprise | Vollständige relationale Datenbank |
# Auf MySQL-Speicherung umstellen
SAVE_DATA_OPTION = "db"
# Verbindung in db_config.py konfigurieren
DB_HOST = "localhost"
DB_PORT = 3306
DB_USER = "root"
DB_PASSWORD = "your_password"
DB_NAME = "media_crawler"
8. Erweiterte Funktionen
8.1 WebUI – Visuelle Bedienung
# Terminal 1: Backend-API starten
uv run uvicorn api.main:app --port 8080 --reload
# Terminal 2: Frontend starten (Entwicklungsmodus)
cd webui && npm install && npm run dev
# Aufrufen: http://localhost:5173/
# Oder Produktions-Build erstellen
cd webui && npm install && npm run build
# Nur API-Server starten, dann: http://localhost:8080
Die WebUI bietet eine visuelle Konfigurationsoberfläche für den Crawler – ohne Befehlszeile.
8.2 IP-Proxy-Pool-Konfiguration
Für großflächige Datenerfassung wird ein Proxy-Pool empfohlen:
ENABLE_IP_PROXY = True
IP_PROXY_POOL_COUNT = 2
IP_PROXY_PROVIDER_NAME = "kuaidaili" # Unterstützt: kuaidaili | wandouhttp | static
# Statische Proxy-Konfiguration
IP_PROXY_PROVIDER_NAME = "static"
STATIC_PROXY_URL = "http://user:password@your_proxy:port"
8.3 Parallelität und Frequenzsteuerung
# Parallelität (vorsichtig einstellen – zu hoch löst Risikosteuerung aus)
MAX_CONCURRENCY_NUM = 1
# Maximale Erfassungsmenge pro Keyword
CRAWLER_MAX_NOTES_COUNT = 50
# Startseitennummer
START_PAGE = 1
8.4 Kommentar-Wortwolke
MediaCrawler enthält eine integrierte Wortwolken-Funktion für Kommentare:
# In base_config.py aktivieren
# wordcloud und weitere Abhängigkeiten müssen installiert sein
ENABLE_WORD_CLOUD = True
9. Rechtliche Hinweise und Risikowarnung
Wichtiger Hinweis: Bitte informiere dich vor der Nutzung von MediaCrawler über folgende Risiken:
- Rechtliche Konformität: Beachte das „Cybersicherheitsgesetz", das „Datensicherheitsgesetz" und das „Gesetz zum Schutz persönlicher Informationen" – keine kommerzielle Nutzung
- Plattformregeln: Respektiere die robots.txt und Nutzungsbedingungen der Plattformen, vermeide Massencrawling
- Frequenzkontrolle: Passe die Anfragefrequenz vernünftig an, um die Plattformen nicht zu belasten
- Datenverwendung: Nur für Lern- und Forschungszwecke, keine illegale Nutzung
- Datenschutz: Keine Erfassung oder Verbreitung privater personenbezogener Daten
Referenz: Sammlung von Crawler-Rechtsfällen
10. Vergleich mit anderen Tools
| Feature | MediaCrawler | Snscrape | Tweepy | Eigener Crawler |
|---|---|---|---|---|
| Zielplattform | 7 große chinesische Plattformen | Twitter/X | Twitter/X | Beliebig |
| Anti-Erkennung | CDP-Echt-Browser | Keine | Offizielle API | Selbst implementieren |
| Anmeldungsverwaltung | QR/Telefon/Cookie | Nicht erforderlich | OAuth | Manuell |
| Datenspeicherung | 7 Formate | CLI-Ausgabe | JSON | Selbst implementieren |
| Einstiegshürde | Niedrig (Konfiguration genügt) | Niedrig | Mittel | Hoch |
| Kommentar-Erfassung | ✅ Inkl. Unterkommentare | ❌ | ✅ | Entwicklung nötig |
| Wartungsstatus | Aktiv (64K+ Stars) | Eingestellt | Aktiv | Eigenverantwortlich |
Für allgemeines Web-Crawling empfehle ich Crawl4AI; für Information-Flow-Monitoring und KI-Zusammenfassungen Wiseflow. MediaCrawlers einzigartiger Wert liegt in der tiefgreifenden Anpassung an chinesische Social-Media-Plattformen.
11. Häufig gestellte Fragen (FAQ)
Welche Python-Versionen unterstützt MediaCrawler?
Empfohlen wird Python 3.11 – dies ist die Haupt-Testversion für die Projekt-Abhängigkeiten. Bei der Installation mit uv wird automatisch die passende Python-Version verwendet.
Was tun, wenn der QR-Code-Login fehlschlägt?
Im CDP-Modus: Stelle sicher, dass Chrome >= 144 installiert und Remote-Debugging aktiviert ist. Wenn wiederholt ein QR-Code angefordert wird, schließe den Browser und aktiviere Remote-Debugging erneut. Alternativ kann HEADLESS = False gesetzt und die Schieberegler-Verifizierung manuell durchgeführt werden.
Kann ich gleichzeitig auf mehreren Plattformen crawlen?
Ja, aber serielle Ausführung wird empfohlen. Gib bei jeder Ausführung einen --platform-Parameter an und wechsle erst zur nächsten Plattform, wenn die aktuelle abgeschlossen ist. Paralleles Crawling auf mehreren Plattformen kann Risikosteuerung auslösen.
Wo werden die Daten gespeichert?
Standardmäßig im data/-Ordner im Projektstammverzeichnis, aufgeteilt in Plattform-Unterverzeichnisse. Der Speicherpfad kann über SAVE_DATA_PATH angepasst werden.
Darf MediaCrawler kommerziell genutzt werden?
Nein. Das Projekt verwendet eine „NON-COMMERCIAL LEARNING LICENSE 1.1", die kommerzielle Nutzung ausdrücklich untersagt. Für kommerzielle Nutzung kontaktiere bitte den Autor für eine Lizenz.
12. Zusammenfassung
MediaCrawler ist das derzeit umfassendste Open-Source-Tool zur Erfassung chinesischer Social-Media-Daten – über 64.000 GitHub-Stars belegen seinen praktischen Wert. Die Kernvorteile:
- Breite Abdeckung: Einheitliche Schnittstelle für 7 Plattformen, wechsel ohne Aufwand
- Starke Anti-Erkennung: CDP-Modus nutzt echte Browser-Umgebungen
- Einfacher Einstieg: Ein-Klick-Installation mit uv, sofort einsatzbereit
- Flexible Speicherung: 7 Datenformate für verschiedene Szenarien
- Aktive Community: Kontinuierliche Updates, schnelle Problemlösung
Für Datenanalysten, Meinungsforschende und Content-Operatoren ist MediaCrawler der beste Ausgangspunkt zum Erlernen von Social-Media-Datenerfassung. Bitte nutze es stets rechtskonform und respektiere Plattformregeln und Benutzerdatenschutz.