🔬 Nghiên cứu 🌱 Mới trồng 17 tháng 7, 2026 Trồng 17 thg 7

NanmiCoder/MediaCrawler

📦 NanmiCoder/MediaCrawler ⭐ 57k Mở trên GitHub ↗

MediaCrawler là một tool Python để crawl nội dung và bình luận từ nhiều nền tảng Trung Quốc như Xiaohongshu, Douyin, Kuaishou, Bilibili, Weibo, Tieba và Zhihu. Repo rất phổ biến (~56k stars), hữu ích…

Kết luận: partial · Công nghệ: web-scraping · browser-automation · crawler · anti-bot · data-collection

MediaCrawler là một tool Python để crawl nội dung và bình luận từ nhiều nền tảng Trung Quốc như Xiaohongshu, Douyin, Kuaishou, Bilibili, Weibo, Tieba và Zhihu. Repo rất phổ biến (~56k stars), hữu ích để học kiến trúc crawler đa nguồn, đăng nhập phiên, anti-bot và pipeline thu thập dữ liệu; tuy nhiên rủi ro ToS / pháp lý / chống crawl khiến nó phù hợp hơn để tham khảo có chọn lọc hơn là áp dụng nguyên mẫu.

📖 Giới thiệu chi tiết

🧩 Nó là gì?

NanmiCoder/MediaCrawler là một tool Python để thu thập dữ liệu công khai từ nhiều nền tảng nội dung Trung Quốc như Xiaohongshu, Douyin, Kuaishou, Bilibili, Weibo, Tieba và Zhihu.

Nói đơn giản: nếu bạn muốn học cách một crawler đa nền tảng đăng nhập, tìm bài viết/video, lấy bình luận và lưu dữ liệu ra file hoặc database, MediaCrawler là một repo rất đáng xem.

🎯 Giải quyết vấn đề gì? Dành cho ai?

MediaCrawler giúp tự động lấy các loại dữ liệu như:

  • Bài viết/note trên Xiaohongshu
  • Video và bình luận trên Douyin, Kuaishou, Bilibili
  • Bài đăng và bình luận trên Weibo
  • Bài viết, bình luận, phản hồi trong Tieba
  • Câu hỏi, bài viết và bình luận trên Zhihu

Dự án này phù hợp với:

  • Người mới học Python crawler muốn xem một dự án thực tế, nhiều nền tảng
  • Lập trình viên muốn học cách tổ chức code cho crawler lớn
  • Người làm phân tích dữ liệu muốn thử thu thập dữ liệu công khai để học tập
  • Người muốn hiểu các phần như đăng nhập bằng QR code, lưu trạng thái đăng nhập, lấy bình luận, lưu CSV/JSON/SQLite/MySQL

Nhưng cần nhớ: repo nhấn mạnh rằng chỉ nên dùng cho mục đích học tập và nghiên cứu. Không nên dùng để crawl quy mô lớn, dùng thương mại, hoặc vi phạm điều khoản của các nền tảng.

⚙️ Hoạt động ra sao?

Cơ chế chính của MediaCrawler có thể hiểu như sau:

  • Dùng Playwright để điều khiển trình duyệt giống như người dùng thật đang mở web.
  • Hỗ trợ đăng nhập bằng QR code, sau đó lưu lại trạng thái đăng nhập để lần sau dùng tiếp.
  • Mặc định ưu tiên CDP mode, tức là kết nối vào Chrome có sẵn trên máy bạn, tận dụng cookie và trạng thái đăng nhập hiện tại.
  • Không cần tự “dịch ngược” thuật toán mã hóa JavaScript phức tạp; dự án tận dụng môi trường trình duyệt đã đăng nhập để lấy các tham số cần thiết.
  • Bạn chọn nền tảng bằng tham số như --platform xhs, --platform dy, --platform bili.
  • Bạn chọn kiểu crawl bằng --type search để tìm theo từ khóa hoặc --type detail để lấy dữ liệu theo ID cụ thể.
  • Cấu hình chính nằm trong config/base_config.py, ví dụ bật/tắt crawl bình luận, cấu hình từ khóa, số lượng dữ liệu, cách lưu.
  • Dữ liệu có thể lưu ra nhiều định dạng như CSV, JSON, JSONL, Excel, SQLite hoặc MySQL.
  • Ngoài dòng lệnh, dự án còn có WebUI để cấu hình và theo dõi crawler bằng giao diện web.

🆚 Khi nào nên dùng / không nên

Nên dùng MediaCrawler khi:

  • Bạn muốn học kiến trúc crawler thực tế, không chỉ là ví dụ vài chục dòng.
  • Bạn muốn thử crawl dữ liệu công khai từ nhiều nền tảng trong cùng một project.
  • Bạn cần tham khảo cách xử lý đăng nhập, cookie, phiên làm việc và chống bot ở mức học tập.
  • Bạn muốn có sẵn pipeline từ crawl dữ liệu đến lưu file/database.

Không nên dùng MediaCrawler khi:

  • Bạn cần một giải pháp ổn định cho sản phẩm thương mại.
  • Bạn muốn crawl số lượng lớn mà chưa kiểm tra kỹ điều khoản dịch vụ, pháp lý và giới hạn của nền tảng.
  • Bạn không muốn phụ thuộc vào giao diện web/trạng thái đăng nhập, vì các nền tảng có thể thay đổi bất cứ lúc nào.
  • Bạn cần API chính thức, ổn định, có cam kết SLA; khi đó nên ưu tiên API chính thức hoặc dịch vụ dữ liệu hợp pháp.

So với tự viết crawler từ đầu, MediaCrawler giúp bạn đi nhanh hơn rất nhiều vì đã có sẵn cấu trúc, đăng nhập, nhiều nền tảng và lưu dữ liệu. Nhưng đổi lại, bạn cần hiểu rủi ro ToS/pháp lý và việc crawler có thể bị hỏng khi website thay đổi.

🚀 Bắt đầu nhanh

Các bước tối thiểu để chạy thử:

  1. Cài uv, đây là công cụ quản lý môi trường và package Python.
  2. Cài Node.js phiên bản >= 16.0.0.
  3. Cài Chrome bản mới.
  4. Clone repo và cài dependency.
  5. Bật remote debugging trong Chrome nếu dùng CDP mode.
  6. Chạy crawler bằng lệnh mẫu.
# Clone repo
git clone https://github.com/NanmiCoder/MediaCrawler.git
cd MediaCrawler

# Cài dependency Python bằng uv
uv sync

# Nếu dùng Playwright mode tiêu chuẩn thì cài browser driver
# Nếu dùng CDP mode mặc định thì thường không cần bước này
uv run playwright install

# Chạy thử crawl Xiaohongshu theo từ khóa trong config/base_config.py
uv run main.py --platform xhs --lt qrcode --type search

# Chạy crawl chi tiết theo danh sách ID trong config/base_config.py
uv run main.py --platform xhs --lt qrcode --type detail

# Xem các tùy chọn nền tảng và tham số khác
uv run main.py --help

Nếu dùng CDP mode mặc định, bạn cần mở Chrome và bật remote debugging:

Mở Chrome → truy cập chrome://inspect/#remote-debugging
Bật "Allow remote debugging for this browser instance"
Đảm bảo thấy Server running at: 127.0.0.1:9222

Ví dụ ý nghĩa lệnh:

uv run main.py --platform xhs --lt qrcode --type search

Trong đó:

  • uv run chạy chương trình trong môi trường do uv quản lý.
  • main.py là file chạy chính.
  • --platform xhs chọn nền tảng Xiaohongshu.
  • --lt qrcode chọn đăng nhập bằng QR code.
  • --type search chọn chế độ tìm kiếm theo từ khóa.

Nếu muốn dùng giao diện web:

# Terminal 1: chạy API server
uv run uvicorn api.main:app --port 8080 --reload

# Terminal 2: chạy frontend
cd webui
npm install
npm run dev

Sau đó mở:

http://localhost:5173/

✅ Điểm mạnh & ⚠️ Hạn chế

Điểm mạnh:

  • Hỗ trợ nhiều nền tảng lớn: Xiaohongshu, Douyin, Kuaishou, Bilibili, Weibo, Tieba, Zhihu.
  • Có nhiều chế độ crawl: tìm theo từ khóa, lấy theo ID, lấy bình luận, lấy trang creator.
  • Dùng Playwright và CDP mode giúp tận dụng trạng thái đăng nhập trong trình duyệt thật.
  • Có nhiều kiểu lưu dữ liệu: CSV, JSON, JSONL, Excel, SQLite, MySQL.
  • Repo phổ biến, nhiều người quan tâm, phù hợp để học kiến trúc crawler đa nền tảng.
  • Có WebUI, tiện cho người không muốn thao tác hoàn toàn bằng command line.

Hạn chế:

  • Có rủi ro ToS/pháp lý nếu dùng sai mục đích hoặc crawl quá mức.
  • Các nền tảng có thể thay đổi giao diện/API/chống bot, khiến crawler hỏng bất cứ lúc nào.
  • Phụ thuộc vào trạng thái đăng nhập, cookie, Chrome, Playwright hoặc CDP mode nên môi trường chạy cần cấu hình đúng.
  • Không nên xem đây là giải pháp thương mại “cắm vào là chạy mãi”.
  • Một số tính năng nâng cao như breakpoint resume, nhiều tài khoản + IP proxy pool tốt hơn, hoặc bỏ phụ thuộc Playwright được giới thiệu ở MediaCrawlerPro, không phải bản open-source chính.