1. Qu'est-ce que MediaCrawler ?

MediaCrawler est l'outil open source le plus complet pour l'extraction de données sur les réseaux sociaux chinois, avec plus de 64 000 étoiles sur GitHub, maintenu par le développeur NanmiCoder. Il repose sur le framework d'automatisation de navigateur Python + Playwright, et utilise les sessions de connexion actives pour appeler directement les API des plateformes, sans avoir à逆向 les algorithmes de chiffrement JS complexes, ce qui réduit considérablement la barrière technique.

Positionnement principal : un outil d'apprentissage destiné aux analystes de données, aux chercheurs en opinion publique et aux responsables de contenu, permettant de collecter en un clic les données publiques de 7 grandes plateformes de réseaux sociaux chinois.

Contrairement aux crawlers web génériques comme Crawl4AI, MediaCrawler se spécialise dans les plateformes de réseaux sociaux chinois, avec des logiques de signature et des règles d'analyse de données intégrées pour chaque plateforme, prêt à l'emploi. Si vous avez besoin de collecter des données sur des plateformes internationales, consultez notre analyse approfondie de Wiseflow.

2. Les 7 plateformes prises en charge et matrice des fonctionnalités

Plateforme Recherche par mots-clés Extraction de posts spécifiques Commentaires imbriqués Page créateur Cache de session Pool de proxies IP Nuage de mots des commentaires
Xiaohongshu ✅ ✅ ✅ ✅ ✅ ✅ ✅
Douyin ✅ ✅ ✅ ✅ ✅ ✅ ✅
Kuaishou ✅ ✅ ✅ ✅ ✅ ✅ ✅
Bilibili ✅ ✅ ✅ ✅ ✅ ✅ ✅
Weibo ✅ ✅ ✅ ✅ ✅ ✅ ✅
Tieba ✅ ✅ ✅ ✅ ✅ ✅ ✅
Zhihu ✅ ✅ ✅ ✅ ✅ ✅ ✅

Les sept plateformes offrent exactement les mêmes fonctionnalités — c'est le plus grand avantage architectural de MediaCrawler : une interface unifiée, changer de plateforme ne nécessite que la modification d'un seul paramètre.

3. Analyse de l'architecture technique

L'architecture technique de MediaCrawler est conçue autour de la « réduction du risque de détection anti-bot » :

┌─────────────────────────────────────────────┐
│           Architecture MediaCrawler          │
├─────────────────────────────────────────────┤
│  Couche utilisateur  CLI / Interface WebUI   │
├─────────────────────────────────────────────┤
│  Couche orchestration  Planificateur → Interface crawler unifiée │
├─────────────────────────────────────────────┤
│  Couche exécution    Playwright (mode CDP)   │
│           ├─ Gestion des sessions (QR/Téléphone/Cookie) │
│           ├─ Calcul de signature JS (contexte navigateur réutilisé) │
│           └─ Anti-détection (empreinte navigateur réelle) │
├─────────────────────────────────────────────┤
│  Couche données    CSV / JSON / JSONL / Excel │
│           SQLite / MySQL / PostgreSQL         │
└─────────────────────────────────────────────┘

Principes techniques clés :

  1. Mode CDP (recommandé) : connexion au navigateur Chrome existant via Chrome DevTools Protocol, réutilisation des cookies, extensions et historique de navigation réels pour une anti-détection optimale
  2. Réutilisation des signatures : utilisation du contexte de navigateur avec session active pour obtenir les paramètres de signature de la plateforme via des expressions JS, sans逆向 d'algorithmes de chiffrement
  3. Cache de session : sauvegarde des cookies après la première connexion par QR code, réutilisation automatique lors des exécutions suivantes

4. Installation et démarrage rapide

4.1 Préparation de l'environnement

BASH
# 1. Installer uv (gestionnaire de paquets Python recommandé)
curl -LsSf https://astral.sh/uv/install.sh | sh

# 2. Vérifier Node.js >= 16 (requis pour les signatures Douyin et Zhihu)
node --version

# 3. Cloner le projet
git clone https://github.com/NanmiCoder/MediaCrawler.git
cd MediaCrawler

# 4. Installer les dépendances (uv gère automatiquement la version Python et les dépendances)
uv sync

4.2 Configuration du navigateur Chrome (mode CDP)

MediaCrawler utilise le mode CDP par défaut, qui nécessite la configuration de Chrome :

  1. Installer Chrome >= 144
  2. Saisir chrome://inspect/#remote-debugging dans la barre d'adresse
  3. Cocher "Allow remote debugging for this browser instance"
  4. Vérifier que Server running at: 127.0.0.1:9222 s'affiche

Si vous ne souhaitez pas utiliser le mode CDP, définissez ENABLE_CDP_MODE = False dans config/base_config.py.

4.3 Premier lancement

BASH
# Recherche par mots-clés sur Xiaohongshu (15 notes par défaut)
uv run main.py --platform xhs --lt qrcode --type search

# Au premier lancement, un QR code apparaît — scannez-le avec l'application Xiaohongshu
# La session est mise en cache automatiquement, pas besoin de rescanner

5. Configuration détaillée

config/base_config.py est le fichier de configuration principal. Voici les options les plus courantes :

PYTHON
# Plateforme cible : xhs | dy | ks | bili | wb | tieba | zhihu
PLATFORM = "xhs"

# Mots-clés de recherche (séparés par des virgules)
KEYWORDS = "Tutoriel Python,Programmation side-project,Outils IA"

# Mode de connexion : qrcode (QR code) | phone (téléphone) | cookie (saisie manuelle)
LOGIN_TYPE = "qrcode"

# Type d'extraction : search (recherche) | detail (post spécifique) | creator (page créateur)
CRAWLER_TYPE = "search"

# Format de stockage : csv | db | json | jsonl | sqlite | excel | postgres
SAVE_DATA_OPTION = "jsonl"

# Nombre maximum de notes à extraire par mot-clé
CRAWLER_MAX_NOTES_COUNT = 15

# Nombre de connexions simultanées (garder à 1 pour éviter le blocage)
MAX_CONCURRENCY_NUM = 1

# Activer l'extraction des commentaires
ENABLE_GET_COMMENTS = True

# Activer les commentaires imbriqués (niveau 2)
ENABLE_GET_SUB_COMMENTS = False

# Configuration du proxy IP
ENABLE_IP_PROXY = False
IP_PROXY_PROVIDER_NAME = "kuaidaili"

6. Extraction de données par plateforme

6.1 Extraction sur Xiaohongshu

BASH
# Recherche de notes par mots-clés
uv run main.py --platform xhs --lt qrcode --type search

# Extraction d'une note spécifique par ID
uv run main.py --platform xhs --lt qrcode --type detail

# Extraction de toutes les notes d'un créateur
uv run main.py --platform xhs --lt qrcode --type creator

Les données Xiaohongshu incluent : titre de la note, contenu textuel, liste d'images, nombre de likes, favoris, commentaires, informations de l'auteur, date de publication, etc.

6.2 Extraction sur Douyin

BASH
# Recherche de vidéos
uv run main.py --platform dy --lt qrcode --type search

# Vidéo spécifique par ID
uv run main.py --platform dy --lt qrcode --type detail

L'extraction sur Douyin nécessite Node.js pour le calcul de signatures. Les données incluent : titre de la vidéo, URL de lecture, image de couverture, likes, commentaires, partages, etc.

6.3 Extraction sur Bilibili

BASH
# Recherche de vidéos
uv run main.py --platform bili --lt qrcode --type search

# Vidéo spécifique (numéro BV)
uv run main.py --platform bili --lt qrcode --type detail

Les données Bilibili incluent : titre de la vidéo, numéro BV, nombre de vues, danmaku (commentaires flottants), likes, pièces, favoris, informations du créateur, etc.

6.4 Weibo / Tieba / Zhihu / Kuaishou

BASH
# 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

Le format de commande est identique pour toutes les plateformes — il suffit de modifier le paramètre --platform.

7. Stockage et export des données

MediaCrawler prend en charge 7 formats de stockage, les données étant sauvegardées par défaut dans le dossier data/ :

Format Cas d'usage Caractéristiques
JSONL Collecte quotidienne (par défaut) Écriture ligne par ligne, reprise sur interruption
CSV Analyse Excel Ouverture directe dans les tableurs
JSON Intégration applicative Format standard, structures imbriquées
Excel Rapports Tableur formaté
SQLite Base de données locale Requêtes légères, pas de service supplémentaire
MySQL Environnement de production Déduplication, données à grande échelle
PostgreSQL Entreprise Base de données relationnelle complète
PYTHON
# Passer au stockage MySQL
SAVE_DATA_OPTION = "db"

# Configurer la connexion dans db_config.py
DB_HOST = "localhost"
DB_PORT = 3306
DB_USER = "root"
DB_PASSWORD = "your_password"
DB_NAME = "media_crawler"

8. Utilisations avancées

8.1 Interface WebUI

BASH
# Terminal 1 : démarrer le backend API
uv run uvicorn api.main:app --port 8080 --reload

# Terminal 2 : démarrer le frontend (mode développement)
cd webui && npm install && npm run dev
# Accéder à http://localhost:5173/

# Ou construire la version production
cd webui && npm install && npm run build
# Démarrer uniquement le serveur API, accéder à http://localhost:8080

La WebUI fournit une interface de configuration visuelle pour utiliser le crawler sans ligne de commande.

8.2 Configuration du pool de proxies IP

Pour la collecte à grande échelle, il est recommandé d'activer un pool de proxies :

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

# Configuration proxy statique
IP_PROXY_PROVIDER_NAME = "static"
STATIC_PROXY_URL = "http://user:password@your_proxy:port"

8.3 Contrôle du parallélisme et de la fréquence

PYTHON
# Nombre de connexions simultanées (à utiliser avec prudence, un nombre trop élevé déclenche le blocage)
MAX_CONCURRENCY_NUM = 1

# Nombre maximum de collectes par mot-clé
CRAWLER_MAX_NOTES_COUNT = 50

# Page de départ pour la pagination
START_PAGE = 1

8.4 Génération de nuage de mots des commentaires

MediaCrawler intègre une fonction de nuage de mots pour les commentaires, générant automatiquement des visualisations :

PYTHON
# Activer dans base_config.py
# Nécessite l'installation préalable de wordcloud et autres dépendances
ENABLE_WORD_CLOUD = True

9. Conformité et risques juridiques

Rappel important : avant d'utiliser MediaCrawler, veillez à prendre connaissance des risques suivants :

  1. Conformité juridique : respectez la Loi sur la cybersécurité, la Loi sur la sécurité des données et la Loi sur la protection des informations personnelles ; l'usage commercial est interdit
  2. Règles des plateformes : respectez les fichiers robots.txt et les conditions d'utilisation de chaque plateforme, évitez la collecte massive
  3. Contrôle de la fréquence : maîtrisez la fréquence des requêtes pour ne pas surcharger les plateformes
  4. Usage des données : uniquement à des fins d'apprentissage et de recherche, pas d'usage illégal
  5. Protection de la vie privée : ne collectez ni ne diffusez d'informations personnelles privées

Référence : Collection de cas juridiques liés aux crawlers

10. Comparaison avec d'autres outils

Fonctionnalité MediaCrawler Snscrape Tweepy Crawler personnalisé
Plateformes cibles 7 grandes plateformes chinoises Twitter/X Twitter/X Toute plateforme
Anti-détection Navigateur réel via CDP Aucune API officielle À implémenter
Gestion des sessions QR/Téléphone/Cookie Non requis OAuth Manuel
Stockage des données 7 formats Sortie console JSON Personnalisé
Facilité de prise en main Faible (config et c'est parti) Faible Moyenne Élevée
Extraction de commentaires ✅ Commentaires imbriqués ❌ ✅ À développer
État de maintenance Actif (64K+ étoiles) Stagnant Actif Dépend de vous

Si vous avez besoin de capacités de crawl web générique, nous recommandons Crawl4AI ; pour la surveillance de flux d'information et le résumé IA, consultez Wiseflow. La valeur unique de MediaCrawler réside dans son adaptation approfondie aux réseaux sociaux chinois.

11. FAQ

Quelles versions Python MediaCrawler prend-il en charge ?

Python 3.11 est recommandé — c'est la version principale de test pour les dépendances du projet. Avec uv, la bonne version de Python est automatiquement sélectionnée.

Que faire si la connexion par QR code échoue ?

En mode CDP, assurez-vous que Chrome >= 144 est installé et que le débogage à distance est activé. Si le QR code est redemandé en boucle, fermez le navigateur et réactivez le débogage à distance. Vous pouvez aussi passer en HEADLESS = False et effectuer la vérification par glissement manuellement.

Peut-on extraire des données de plusieurs plateformes simultanément ?

Oui, mais l'exécution sérielle est recommandée. Spécifiez un paramètre --platform par exécution, puis passez à la plateforme suivante. Le multi-plateforme en parallèle risque de déclencher le blocage.

Où sont stockées les données ?

Par défaut dans le dossier data/ à la racine du projet, avec des sous-dossiers par plateforme. Vous pouvez personnaliser le chemin via SAVE_DATA_PATH.

MediaCrawler peut-il être utilisé commercialement ?

Non. Le projet utilise une licence d'apprentissage non commercial (NON-COMMERCIAL LEARNING LICENSE 1.1), qui interdit explicitement l'usage commercial. Pour un usage commercial, contactez l'auteur pour obtenir une licence.

12. Conclusion

MediaCrawler est l'outil open source le plus abouti pour la collecte de données sur les réseaux sociaux chinois, comme en témoignent ses 64 000+ étoiles GitHub. Ses avantages principaux :

  • Couverture large : interface unifiée pour 7 plateformes, changement sans coût
  • Anti-détection puissante : mode CDP réutilisant l'environnement navigateur réel
  • Prise en main facile : installation en un clic avec uv, configuration immédiate
  • Stockage flexible : 7 formats adaptés à différents scénarios
  • Communauté active : mises à jour continues, réponses rapides

Pour les analystes de données, chercheurs en opinion publique et responsables de contenu, MediaCrawler est le meilleur point de départ pour apprendre la collecte de données sur les réseaux sociaux. Veillez toutefois à l'utiliser dans le respect de la réglementation, des règles des plateformes et de la vie privée des utilisateurs.