What Platforms Does MediaCrawler Support? A Complete Guide to the 7 Chinese Social Media Platforms
MediaCrawler supports seven major Chinese social media platforms: XiaoHongShu (xhs), Douyin (dy), Kuaishou (ks), Bilibili (bili), Weibo (wb), Tieba (tieba), and Zhihu (zhihu).
MediaCrawler is a multi-platform self-media crawler that provides a unified interface for extracting public data from Chinese social networks. According to the NanmiCoder/MediaCrawler source code, the project architecture treats each platform as a separate module under media_platform/, enabling seamless addition of new services while maintaining consistent core workflows across all supported platforms.
The Seven Platforms Supported by MediaCrawler
The repository explicitly documents support for the following platforms in the project architecture documentation (docs/项目架构文档.md, lines 11-19) and the README feature table:
| Platform | Code | Primary Capabilities |
|---|---|---|
| XiaoHongShu (小红书) | xhs |
Note search, detail, creator |
| Douyin (抖音) | dy |
Video search, detail, creator |
| Kuaishou (快手) | ks |
Video search, detail, creator |
| Bilibili (B站) | bili |
Video search, detail, UP-owner |
| Weibo (微博) | wb |
Post search, detail, author |
| Tieba (百度贴吧) | tieba |
Post search, detail |
| Zhihu (知乎) | zhihu |
Q&A search, detail, answerer |
Each platform implements a standardized interface for content discovery, metadata extraction, and creator information retrieval.
How Platform Support Is Implemented in the Codebase
MediaCrawler uses a factory-based architecture to manage platform-specific implementations. The core abstraction is defined in base/base_crawler.py, which establishes the interface for all crawlers, login handlers, and storage mechanisms.
Key architectural components include:
- CrawlerFactory: Located in
base/base_crawler.py, this factory creates platform-specific crawler instances at runtime based on the platform code (e.g., "dy", "xhs"). - Platform Modules: Each platform resides in
media_platform/{platform_code}/core.py(e.g.,media_platform/xhs/core.py,media_platform/douyin/core.py), containing the concrete implementation of search, detail, and creator extraction logic. - Configuration:
config/base_config.pyholds global settings includingPLATFORM,LOGIN_TYPE, and feature toggles that determine which crawler executes.
The modular design allows developers to add new platforms by implementing the base crawler interface and registering the new module in the factory, without modifying existing platform code.
How to Run Crawlers for Specific Platforms
Command Line Usage
You can initiate crawlers for any supported platform using the CLI entry point in main.py. The --platform parameter accepts the platform codes listed above.
Crawl XiaoHongShu notes using QR code authentication:
uv run main.py --platform xhs --lt qrcode --type search
Extract Douyin video details:
uv run main.py --platform dy --lt qrcode --type detail
Programmatic Usage
For custom workflows, instantiate crawlers directly via the CrawlerFactory:
from base.base_crawler import CrawlerFactory
# Create a Douyin crawler instance
douyin_crawler = CrawlerFactory.create_crawler("dy")
await douyin_crawler.start()
This pattern allows you to integrate MediaCrawler into larger data pipelines while maintaining the abstraction layer that handles authentication, rate limiting, and storage formatting.
Summary
MediaCrawler provides comprehensive support for seven major Chinese social media platforms through a modular, extensible architecture:
- Seven platforms: XiaoHongShu, Douyin, Kuaishou, Bilibili, Weibo, Tieba, and Zhihu
- Unified interface: Common abstractions for crawlers, login handlers, and storage factories defined in
base/base_crawler.py - Flexible execution: CLI interface via
main.pyor programmatic access throughCrawlerFactory.create_crawler() - Modular implementation: Each platform isolated in
media_platform/{code}/core.pyfor maintainability - Pluggable storage: Support for CSV, JSONL, SQLite, MySQL, MongoDB, and Excel via the
store/directory
Frequently Asked Questions
Can I add custom platforms to MediaCrawler?
Yes. The architecture supports adding new platforms by implementing the abstract crawler interface defined in base/base_crawler.py and creating a new module under media_platform/. You must implement the core search, detail, and creator methods, then register the new platform in the CrawlerFactory to make it available via the CLI and programmatic interfaces.
What authentication methods are available for these platforms?
MediaCrawler supports multiple login types specified via the --lt parameter or LOGIN_TYPE configuration. Common options include qrcode for QR code authentication, phone for mobile number login, and cookie for session-based authentication. The specific methods available vary by platform and are implemented in each platform's login handler under media_platform/{platform}/login.py.
Which storage formats does MediaCrawler support for crawled data?
The repository supports multiple storage backends through the store/ directory implementations. You can persist data to CSV, JSONL, SQLite, MySQL, MongoDB, or Excel formats. Each platform has dedicated storage logic in store/{platform}/__init__.py that handles data transformation and persistence, allowing you to configure the output format via config/base_config.py.
Is there a way to crawl multiple platforms simultaneously?
While main.py processes a single platform per execution, you can orchestrate multi-platform crawling by invoking separate processes or async tasks using the programmatic API. Create multiple crawler instances via CrawlerFactory.create_crawler() for different platforms (e.g., "xhs" and "dy") and run them concurrently within your Python application, as each crawler operates independently with its own configuration and storage context.
Have a question about this repo?
These articles cover the highlights, but your codebase questions are specific. Give your agent direct access to the source. Share this with your agent to get started:
curl -s "https://instagit.com/install.md" Maintain an open-source project? Get it listed too →