MediaCrawler 多平台数据采集终极指南:7 个平台的内容与评论一次搞定
【免费下载链接】MediaCrawler小红书笔记 | 评论爬虫、抖音视频 | 评论爬虫、快手视频 | 评论爬虫、B 站视频 | 评论爬虫、微博帖子 | 评论爬虫、百度贴吧帖子 | 百度贴吧评论回复爬虫 | 知乎问答文章|评论爬虫项目地址: https://gitcode.com/GitHub_Trending/me/MediaCrawler
MediaCrawler 是一款开源的多平台数据采集工具,覆盖小红书、抖音、快手、B站、微博、贴吧、知乎共 7 个平台,抓帖子、视频、评论,登录一次即可复用登录态。适合做内容分析、竞品监控的运营同学,也适合想入门爬虫的新手跟着练手。
手动采集社媒数据的三个麻烦
在写爬虫之前,大多数人干过这种事:
- 复制粘贴太慢。想收集一批关键词下的小红书笔记或抖音视频数据,手动打开网页、复制标题和正文,几十条下来眼睛就花了,数据格式还参差不齐。
- 评论根本没法人工整理。一条热门视频底下上千条评论,人工记录不现实,可评论恰恰是做舆情和内容分析最有价值的部分。
- 平台规则各不相同。每个平台的页面结构、登录方式、参数签名都不一样,自己写爬虫就得为 7 个平台分别折腾,门槛高。
MediaCrawler 的思路是:用浏览器自动化(基于 Playwright)登录并保留登录态,在浏览器环境里取签名参数,绕开了各平台 JS 签名逆向这个最难的坑。7 个平台的采集逻辑都封装好了,你只需要配置和启动。
从 0 到跑起来:五步完成安装配置
先准备两个前置环境:uv(Python 包管理工具,速度快,装依赖一致性更好)和Node.js 16 以上(抖音、知乎两个平台需要用到)。
然后按顺序执行:
# 第一步:克隆仓库 git clone https://gitcode.com/GitHub_Trending/me/MediaCrawler cd MediaCrawler # 第二步:安装 Python 依赖(推荐用 uv,保证版本一致) uv sync # 第三步(可选):标准 Playwright 模式需要浏览器驱动,CDP 模式可跳过 uv run playwright install配置集中放在 config/base_config.py,每个平台还有各自的配置文件(如 config/dy_config.py),全部带中文注释。新手重点看这几个值:
PLATFORM:选平台,xhs/dy/ks/bili/wb/tieba/zhihuKEYWORDS:关键词,多个用英文逗号分隔CRAWLER_TYPE:search(关键词搜索)、detail(指定帖子)、creator(创作者主页)CRAWLER_MAX_NOTES_COUNT:采集帖子/视频数量上限ENABLE_GET_COMMENTS:是否抓评论
浏览器方面推荐默认的 CDP 模式(ENABLE_CDP_MODE = True):它直接连接你本地已登录的 Chrome/Edge,复用真实浏览器的 Cookie 和扩展,被平台风控检测的概率明显更低。使用前在 Chrome 地址栏输入chrome://inspect/#remote-debugging勾选允许远程调试即可,详见 docs/CDP模式使用指南.md。
最后启动:
uv run main.py --platform xhs --lt qrcode --type search命令会弹出一个浏览器窗口,用手机 App 扫二维码登录,之后采集就自动开始了。
不想敲命令也可以:项目内置了一套 WebUI 可视化界面(webui/),在网页上选平台、填关键词、看实时日志、预览导出数据,适合不想碰终端的同学。
按场景实战:三种取法 + 评论采集
不要按平台记参数,按任务记。所有平台通用的就是三种模式,切换--type即可。
按关键词取内容
最常用。在配置文件里写好KEYWORDS(比如"咖啡探店,咖啡店"),运行--type search,程序会按关键词搜索并逐页翻取结果。小红书还支持在 config/xhs_config.py 里选排序方式(默认按热度)。
按帖子/视频 ID 取内容
手里已经有一批目标链接(比如竞品发布的视频),把它们填进对应平台的"指定 URL 列表"(如XHS_SPECIFIED_NOTE_URL_LIST),运行--type detail,程序直接抓这几条的详情和评论。也支持只填 ID,多个用逗号分隔。
按创作者账号取内容
要监控某个账号的更新,把账号主页链接填进CREATOR_ID_LIST一类的配置,运行--type creator,即可拉取该创作者发布的内容列表。
评论采集:一层和两层都支持
ENABLE_GET_COMMENTS = True时默认抓一级评论,单条内容的评论上限由CRAWLER_MAX_COMMENTS_COUNT_SINGLENOTES控制;把ENABLE_GET_SUB_COMMENTS改成True还能抓回复里的二级评论。做小红书评论采集、抖音视频数据这类任务时,评论字段(内容、点赞数、作者、时间)都会随数据一起落盘。另外还有个隐藏功能:ENABLE_GET_WORDCLOUD = True可以生成评论词云图,直观看出高频词,配置方法见 docs/词云图使用配置.md。
进阶:什么时候需要代理 IP,怎么接
小批量采集(每天几十条),用自己的 IP 完全够,不用配代理。但当你长时间大批量跑、或者同一台机器同时抓多个平台时,平台容易对 IP 限流,这时才需要代理。
MediaCrawler 内置了代理 IP 池:自动向代理商拉取一批 IP、缓存到过期前自动换新、失效自动踢出池子,整个过程对采集逻辑透明。
多平台数据采集代理 IP 池工作流程图
接入三步:
- 选一家代理商(项目内置快代理
kuaidaili、豌豆 HTTPwandouhttp两种,也支持static填自己的固定代理地址),把密钥配到 proxy/ 对应模块里; - 在 config/base_config.py 中设置
ENABLE_IP_PROXY = True、IP_PROXY_PROVIDER_NAME = "kuaidaili"、IP_PROXY_POOL_COUNT = 2(池子里同时保留几个 IP); - 也可以直接用命令行参数
--enable_ip_proxy yes --ip_proxy_provider_name wandouhttp,不改配置文件。
以快代理为例,登录其控制台就能看到你账号下的可用 IP 列表:
各家代理商的套餐、密钥申请流程差异较大,具体以 docs/代理使用.md、docs/豌豆HTTP使用文档.md 里的说明为准。
数据落地:存文件和进数据库怎么选
采集完的数据去哪儿,由SAVE_DATA_OPTION决定,支持 8 种:csv、json、jsonl、sqlite、excel、db(MySQL)、mongodb、postgres。默认存到项目根目录的data/文件夹,也可以用SAVE_DATA_PATH改位置。
两种典型用法:
- 存文件(csv / excel / jsonl):给 Excel 直接看、给同事发、做小样本分析。Excel 导出基于 store/excel_store_base.py 实现,字段已按平台整理好表头,打开就能用,细节看 docs/excel_export_guide.md。
- 进数据库(db / mongodb / postgres):要反复跑、数据量大、需要去重和查询时选数据库。入库逻辑在 database/ 目录,基于 ORM 定义表结构,重复 ID 会自动去重。首次用某数据库时先跑一次
--init_db mysql(或sqlite/postgres)初始化表结构,完整说明见 docs/data_storage_guide.md。
一句话:试水用文件,常态化用数据库。
出错了先查这几个常见问题
项目把高频故障整理成了文档,出问题时先翻 docs/常见问题.md,能解决 80% 的卡点:
- 扫码登录一直滑块验证不通过:把
HEADLESS设为False让浏览器可见,手动过一下滑块再重试。 - 抖音/知乎报缺少 node 相关错误:没装 Node.js 或版本低于 16,这两个平台依赖 Node 环境做签名。
- 爬取到一半失效、抓不到数据:平台接口或风控变了,先换个账号或清理
USER_DATA_DIR缓存目录重新登录,其次检查项目是否有新版本。 - 想换账号:删除对应平台的用户数据缓存目录(配置里的
USER_DATA_DIR),重新扫码即可。 - CDP 连不上本地浏览器:确认 Chrome 版本已升级、远程调试已勾选、端口没被占用。
文档没覆盖的问题,可以到 docs/微信交流群.md 找交流群,或者直接读对应平台的源码(media_platform/ 下每个平台都有client.py、core.py、login.py,结构一致,对照着看很好上手)。更完整的资料都在 docs/ 目录里。
MediaCrawler 适合两类人:需要定期从多个平台批量拉取内容和评论做分析的运营与研究人员,以及想找一个结构清晰的开源项目来学爬虫的开发者。装好环境、扫一次码,你的多平台数据采集流水线就转起来了。
【免费下载链接】MediaCrawler小红书笔记 | 评论爬虫、抖音视频 | 评论爬虫、快手视频 | 评论爬虫、B 站视频 | 评论爬虫、微博帖子 | 评论爬虫、百度贴吧帖子 | 百度贴吧评论回复爬虫 | 知乎问答文章|评论爬虫项目地址: https://gitcode.com/GitHub_Trending/me/MediaCrawler
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考