MediaCrawler 多平台采集:从装环境到跑通
2026/9/19 7:08:45 网站建设 项目流程

MediaCrawler 多平台采集:从装环境到跑通

【免费下载链接】MediaCrawler小红书笔记 | 评论爬虫、抖音视频 | 评论爬虫、快手视频 | 评论爬虫、B 站视频 | 评论爬虫、微博帖子 | 评论爬虫、百度贴吧帖子 | 百度贴吧评论回复爬虫 | 知乎问答文章|评论爬虫项目地址: https://gitcode.com/GitHub_Trending/me/MediaCrawler

你需要把小红书上一个话题下的笔记连同评论批量拿下来做分析,手动复制粘贴效率太低,还经常漏。MediaCrawler 是一个多平台自媒体数据采集工具,覆盖小红书、抖音、快手、B站、微博、贴吧、知乎 7 个平台,基于 Playwright 和浏览器登录态工作,不需要你去逆向各家的加密签名参数。这篇文章带你走完"装好依赖→配好浏览器→改几个配置→跑通第一次采集"这条最短路径,再讲清楚代理、频率和存储怎么配才稳。

🚀 装依赖,把第一次采集跑通

先克隆仓库并安装依赖:

git clone https://gitcode.com/GitHub_Trending/me/MediaCrawler cd MediaCrawler uv sync

项目默认走 CDP 模式,也就是接管你自己日常使用的 Chrome,这样浏览器指纹、Cookie、扩展都是真实的,比无头浏览器不容易触发风控。准备步骤只有两个:

  • Chrome 升到 144 以上版本,地址栏输入chrome://version可查
  • 地址栏输入chrome://inspect/#remote-debugging,勾选 "Allow remote debugging for this browser instance",看到 9222 端口提示即就绪

更完整的说明见 CDP模式使用指南。

然后改 config/base_config.py 里真正要动的几个字段,其余全部保持默认:

PLATFORM = "xhs" # 要采集的平台 KEYWORDS = "咖啡探店" # 搜索关键词,英文逗号分隔 CRAWLER_TYPE = "search" # search 关键词 / detail 指定帖子 / creator 创作者主页 CRAWLER_MAX_NOTES_COUNT = 20 # 最多采集的帖子数 SAVE_DATA_OPTION = "jsonl" # 存储格式,默认 jsonl

运行:

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

命令行参数会覆盖配置文件里的同名项,所以调参时改哪边都行。首次运行会拉起浏览器,扫码登录后自动保存登录态(SAVE_LOGIN_STATE默认开启),之后的运行就直接复用,数据落在data/目录下。

📋 三种玩法:搜索、盯帖、盯人

配置里只有一行CRAWLER_TYPE决定采集模式,--type命令行参数同理,三种模式的区别如下:

模式你输入什么采到什么关键配置项
searchKEYWORDS关键词关键词命中的帖子列表 + 每帖评论CRAWLER_MAX_NOTES_COUNTCRAWLER_MAX_COMMENTS_COUNT_SINGLENOTES
detail帖子链接列表指定帖子的详情和评论ENABLE_GET_COMMENTSENABLE_GET_SUB_COMMENTS(二级评论默认关)
creator博主主页链接该博主的头像昵称等主页数据 + 近期发帖CRAWLER_MAX_NOTES_COUNT

三个补充点:

  • 想要视频或图片素材,把ENABLE_GET_MEIDAS改成True,默认只采元数据不下载媒体文件
  • 评论默认开(ENABLE_GET_COMMENTS = True),单帖一级评论条数由CRAWLER_MAX_COMMENTS_COUNT_SINGLENOTES控制
  • 想要评论词云,把ENABLE_GET_WORDCLOUD打开,仅 json/jsonl 存储模式下生效

🛡️ 把采集跑稳:代理、频率、存储

代理池的工作机制

ENABLE_IP_PROXY改成True开启代理,同时指定服务商IP_PROXY_PROVIDER_NAMEkuaidaili快代理、wandouhttp豌豆HTTP、static静态代理)和池大小IP_PROXY_POOL_COUNT。工作机制是这样的:启动时按池大小向服务商拉一批 IP 存进内存池;每次请求前随机抽一个,用完即从池中移除;抽到的 IP 会先通过一个测试地址验证连通性,不通就换;IP 带有效期(is_current_proxy_expired会按过期时间提前缓冲判断),过期或请求连续失败时自动重新拉取一批。static模式则直接把STATIC_PROXY_URL填成http://用户:密码@地址:端口这种固定代理。

服务商的密钥不写在配置文件里,而是读环境变量(大小写均可),以豌豆HTTP为例是WANDOU_APP_KEY,快代理是KDL_SECERT_ID/KDL_SIGNATURE/KDL_USER_NAME/KDL_USER_PWD,具体读取逻辑在 proxy/providers/ 目录。拿 IP 用的账密和提取 API 长这样:

请求间隔怎么设

控制频率的核心是CRAWLER_MAX_SLEEP_SEC,默认 2 秒,表示每次请求间随机等待 0 到 2 秒。小批量(几十条)保持 2 秒就够;量大或目标平台风控严时调到 3-5 秒,配合代理一起用。并发数MAX_CONCURRENCY_NUM默认 1,不建议一开始就调大——并发越高,IP 消耗越快,登录态也越容易被平台判定异常。

存储格式怎么选

SAVE_DATA_OPTION可选csvjsonjsonlexcelsqlitedb(MySQL)、postgres,文件类格式都落在data/目录:

  • jsonl(默认):每行一个 JSON 对象,追加写入性能好,适合自己用脚本二次处理
  • csv:结构最简单的表格,快速查看够用
  • excel:带格式的多工作表(内容、评论、创作者分开),适合直接发给人分析
  • sqlite/db/postgres:入库前先跑uv run main.py --init_db sqlite初始化建表,数据库方式自带去重,适合同一批任务反复跑的场景

各平台的落盘逻辑在 store/ 目录按平台拆分,想加自定义存储可以从这里入手。存储方式的完整示例见 data_storage_guide。

🔍 卡住了怎么办

三个最高频的问题,都按"现象→原因→两步排查"处理。

问题:登录态失效,总是跳回扫码页

现象:上次还好好的,今天一运行又弹出二维码,或者扫码后提示失败。最可能的原因是 Cookie 过期,或无头模式下没通过滑块验证。两步排查:第一,把HEADLESS保持False,让浏览器有界面,手动滑一次滑块再让它保存登录态;第二,如果反复失效,改用 CDP 连接你自己天天在用的 Chrome(默认配置CDP_CONNECT_EXISTING = True已开),真实浏览器的登录状态基本不会突然失效,具体步骤看 CDP模式使用指南。

问题:代理池空了,日志反复报错拉不到 IP

现象:开了代理后启动日志里出现获取 IP 失败、然后不停重试。最可能的原因是环境变量没配或服务商额度用尽。两步排查:第一,确认对应的环境变量真的导入了(比如WANDOU_APP_KEY),而不是还留着配置里的your_wandou_http_app_key占位值;第二,登录服务商后台核对 API 额度与有效期,额度为 0 时拉取必然为空。

问题:数据能采到,但某个字段是空的

现象:jsonl 文件里某列(比如作者粉丝数、点赞数)全是 null。最可能的原因是平台接口字段改版,解析规则对不上。两步排查:第一,翻运行日志里打印的原始响应,确认接口里到底还有没有这个字段;第二,定位到 media_platform/ 目录下对应平台的field.py,那里集中了字段名到数据模型的映射,按实际响应改字段名即可。

写在最后

采集频率请控制在合理范围,数据仅用于学习和研究,项目 LICENSE 是明确禁止商业用途的。想继续深入,建议直接读三个地方:docs/ 目录下的常见问题、CDP 与存储指南,media_platform/ 里各平台的 API 客户端实现,以及 proxy/ 目录的代理池源码。

【免费下载链接】MediaCrawler小红书笔记 | 评论爬虫、抖音视频 | 评论爬虫、快手视频 | 评论爬虫、B 站视频 | 评论爬虫、微博帖子 | 评论爬虫、百度贴吧帖子 | 百度贴吧评论回复爬虫 | 知乎问答文章|评论爬虫项目地址: https://gitcode.com/GitHub_Trending/me/MediaCrawler

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询