MediaCrawler 采集教程:小红书抖音B站数据抓取指南
【免费下载链接】MediaCrawler-new项目地址: https://gitcode.com/GitHub_Trending/me/MediaCrawler-new
MediaCrawler 是基于 Python 的开源数据采集框架,覆盖小红书、抖音、快手、B站、微博,抓取帖子、评论与点赞转发数据。它用 Playwright 驱动浏览器完成登录,免去加密参数逆向,适合做内容分析的人使用。
功能覆盖一览:五个平台支持哪些爬取模式
| 平台 | 二维码登录 | Cookie 登录 | 关键词搜索 | 指定ID爬取 | 创作者主页 | IP 代理池 | 滑块验证码 |
|---|---|---|---|---|---|---|---|
| 小红书 | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✕ |
| 抖音 | ✅ | ✅ | ✅ | ✅ | ✕ | ✅ | ✅ |
| 快手 | ✅ | ✅ | ✅ | ✅ | ✕ | ✅ | ✕ |
| B站 | ✅ | ✅ | ✅ | ✅ | ✕ | ✅ | ✕ |
| 微博 | ✅ | ✅ | ✅ | ✅ | ✕ | ✅ | ✕ |
五个平台都支持登录状态缓存(缓存后重复运行不用再次扫码)和 csv、json、数据库三种数据保存。指定 ID 爬取时,各平台在 config/base_config.py 中有对应的 ID 列表变量,如XHS_SPECIFIED_ID_LIST、BILI_SPECIFIED_ID_LIST。
环境准备与首次运行:从 clone 到第一批数据
git clone https://gitcode.com/GitHub_Trending/me/MediaCrawler-new克隆完成后,在项目目录里创建并激活虚拟环境,安装 Python 依赖与浏览器内核:
python -m venv venv && source venv/bin/activate pip install -r requirements.txt && playwright installWindows 下激活命令换成venv\Scripts\activate。然后执行搜索模式爬取:
python main.py --platform xhs --lt qrcode --type search这条命令会启动无头浏览器,用小红书 App 扫码登录后自动开始抓取,结果落到data/目录。如果后续要爬抖音,先装 Node.js v16.8.0,抖音签名依赖本地 JS 执行。
⚙️ 关键配置项:爬取类型、保存格式与无头模式
三个最影响使用体验的配置:
CRAWLER_TYPE:决定爬取模式。"search"按KEYWORDS关键词搜索;"detail"按配置里的 ID 列表抓指定帖子;"creator"抓创作者主页(仅小红书支持)。SAVE_DATA_OPTION:"csv"、"json"直接写入data/目录;"db"写入 MySQL/PgSQL,连接信息在 config/db_config.py 配置,也支持 sqlite。HEADLESS:True时无头运行;设为False会弹出可见浏览器,小红书扫码不通过或出现滑块时可以人工介入。
另外ENABLE_GET_COMMENTS默认False,需要评论数据时改为True;CRAWLER_MAX_NOTES_COUNT与MAX_CONCURRENCY_NUM分别控制单次采集上限和并发数。
🎯 实战场景:按热度抓取小红书"健身教程"笔记
目标:拿一批按热度排序的健身教程笔记,连同评论内容,用于话题趋势分析。
配置改动(均在config/base_config.py):
PLATFORM = "xhs"KEYWORDS = "健身教程"SORT_TYPE = "popularity_descending"(按热度排序,排序选项目前仅小红书支持)ENABLE_GET_COMMENTS = TrueCRAWLER_MAX_NOTES_COUNT = 100
执行与首次运行相同的 search 命令。产出物是data/下的数据文件(格式跟随SAVE_DATA_OPTION),包含笔记正文、点赞收藏等互动计数,开启评论后还有逐条评论。后续可以直接用 pandas 读取,做词频统计或互动趋势图。
🌐 代理 IP 池配置:Redis 缓存与密钥设置
大规模采集时 IP 容易被风控,项目内置了代理 IP 池:启动时判断是否启用代理,从服务商拉取可用 IP 存入 Redis 并记录过期时间,再由爬虫从池中取用。整体流程见下图。
MediaCrawler 代理 IP 池获取与轮换流程图
配置步骤:
- 本地安装 Redis 并设置密码,连接信息写在
config/db_config.py(REDIS_DB_HOST、REDIS_DB_PWD)。 - 在代理服务商后台生成 API 链接,取其中的
key和crypto两个参数。
- 把两个参数写入环境变量,避免在代码里硬编码明文密钥。
- 修改配置启用代理:
ENABLE_IP_PROXY = True,IP_PROXY_POOL_COUNT控制池内 IP 数量。
目录结构:平台实现与存储模块怎么组织
入口是main.py,按--platform参数分发到media_platform/下小红书、抖音、快手、B站、微博各自的 crawler 实现,它们都继承base/base_crawler.py的抽象基类。store/里每个平台对应一套存储实现(csv/json/db 三选一),proxy/负责代理 IP 池的拉取与缓存,tools/放滑块处理、滑动轨迹模拟等函数,libs/中的douyin.js是抖音签名脚本、stealth.min.js用于去除浏览器自动化特征。
🛠️ 首次运行报错排查:超时、缺 Node.js 与登录失效
- 现象:爬抖音报
execjs._exceptions.ProgramError: SyntaxError: 缺少 ';'。原因:本机缺少 Node.js 运行时。解法:安装 Node.js v16.8.0 后重试。 - 现象:
playwright TimeoutError: Timeout 30000ms exceeded。原因:网络无法访问目标站点,通常是网络环境没配好。解法:检查网络与代理设置后再重试。 - 现象:一开始能正常爬取,过几天登录态失效、抓不到数据。原因:账号触发了平台风控。解法:删除根目录
browser_data/下的缓存换账号重新登录,同时调低采集上限和并发,避免大规模抓取。 - 现象:小红书二维码扫码一直不通过或弹出滑块。原因:无头浏览器行为被平台识别。解法:把
HEADLESS设为False,在可见浏览器中手动完成验证。
更多问题可查 docs/常见问题.md。
建议先用默认配置跑通一次小红书 search 模式,确认data/目录生成了数据文件;流程验证后再按需调整关键词、开启评论采集,或接入代理池与数据库存储。项目仅限学习研究用途,采集规模请遵守各平台规则。
【免费下载链接】MediaCrawler-new项目地址: https://gitcode.com/GitHub_Trending/me/MediaCrawler-new
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考