☰
4步跑通第一个社交媒体数据采集任务:MediaCrawler-new爬虫框架完整上手指南
2026/10/26 1:14:23 网站建设 项目流程

4步跑通第一个社交媒体数据采集任务:MediaCrawler-new爬虫框架完整上手指南

【免费下载链接】MediaCrawler-new项目地址: https://gitcode.com/GitHub_Trending/me/MediaCrawler-new

先给你结果:运行一条命令python main.py --platform xhs --lt qrcode --type search,用手机扫一下二维码,几分钟之内,项目目录下的data/文件夹里就会多出笔记标题、正文、点赞、收藏、转发的结构化数据文件 😮‍💨

这就是MediaCrawler-new——一个开源的社交媒体数据采集爬虫框架,覆盖小红书、抖音、快手、B站、微博五大平台,基于 playwright 驱动真实浏览器完成批量采集。下面从"它能干什么"讲到"怎么跑起来",全程只需要你会改配置文件。

一句话讲清:它能帮你做什么

如果你要的是"批量拿到公开内容数据,而不是更快的复制粘贴",它可以覆盖这几件事:

  • 五个平台一套框架:小红书(xhs)、抖音(dy)、快手(ks)、B站(bili)、微博(wb),换平台只需要改一个参数
  • 采集维度全:笔记/视频、图片、评论、点赞、收藏、转发,评论可以整楼抓取
  • 三种找数据的方式:关键词搜索(search)、指定帖子/视频 ID(detail)、创作者主页(creator)
  • 三种登录方式:qrcode 扫码、phone 手机号+验证码、cookie
  • 数据出口灵活:json/csv/ 数据库(MySQL、PostgreSQL)任选,落盘在data/目录下
  • 稳定性配件齐全:登录状态缓存、代理 IP 池(Redis)、无头模式、抖音滑块验证码处理

它凭什么比"直接抓接口"省事?

常规做法是抓包、逆向签名算法、自己实现加密参数——平台一改版,你的脚本就废一半。

MediaCrawler-new 的思路完全不同:它用 playwright 搭一个真实浏览器,登录成功后保留这个登录上下文,需要加密参数时直接在浏览器里执行 JS 表达式拿结果。配套的libs/stealth.min.js负责抹掉浏览器的自动化特征,libs/douyin.js承担抖音的签名函数。

一句话收住:它不去破解平台,而是扮演一个真实用户。你因此不需要懂接口签名、不需要会抓包,只要会改 config/base_config.py 就够了。想知道代码怎么组织的,可以看 docs/项目代码结构.md。

从克隆到出数据的四步

第一步:把项目拿下来

git clone https://gitcode.com/GitHub_Trending/me/MediaCrawler-new cd MediaCrawler-new

第一行克隆代码到本地,第二行进入项目根目录(后面所有命令都在这执行)。卡住怎么办:clone 失败基本是网络问题,换个网络或稍后重试即可。

第二步:装好运行环境

python -m venv venv source venv/bin/activate # Windows 用户改为: venv\Scripts\activate pip install -r requirements.txt playwright install

逐行看:venv给项目建一个独立的 Python 虚拟环境,避免依赖和系统里其他项目打架;pip install按 requirements.txt 装上 playwright 等全部依赖;playwright install下载浏览器内核,这是它"扮演真实用户"的硬件基础。卡住怎么办:playwright install很慢或失败,优先排查网络;另外先跑一下node -v确认装了 Node.js(v16.8.0 及以上),爬抖音时缺它必报错,具体症状见下文。

第三步:改配置文件里的三行

打开 config/base_config.py,改这三个值:

PLATFORM = "xhs" # 爬哪个平台:xhs | dy | ks | bili | wb KEYWORDS = "python,golang" # 搜索什么关键词,多个用英文逗号分隔 LOGIN_TYPE = "qrcode" # 登录方式:qrcode | phone | cookie

这三行分别回答"爬哪""搜什么""怎么登录",其余配置都有默认值,第一次跑不用动。卡住怎么办:不确定某个平台代码怎么写,看 main.py 里--platform参数的 choices 就是全部合法值。

第四步:运行,扫码,收数据

python main.py --platform xhs --lt qrcode --type search

三个参数对应三个问题:--platform xhs爬小红书,--lt qrcode二维码登录,--type search按关键词搜索。运行后会弹出浏览器窗口显示二维码,用手机 APP 扫码确认,随后自动开始采集。✅ 默认一次只爬 20 条(CRAWLER_MAX_NOTES_COUNT = 20),数据按SAVE_DATA_OPTION的默认值以 JSON 存进data/xhs/目录。想抓评论的话,记得先去配置里把ENABLE_GET_COMMENTS打开(默认关闭)。卡住怎么办:扫码一直不通过,先看下一节的"无头模式"开关。

跑起来之后,这四个开关很顶用

1. 登录状态缓存:SAVE_LOGIN_STATE

  • 场景:你打算每天定时跑一次固定任务,每次扫码很烦
  • 改动:保持SAVE_LOGIN_STATE = True(默认就是)
  • 效果:登录上下文被保留,下次启动浏览器直接带登录态开工,跳过扫码;想换账号时,删掉项目根目录下的browser_data/文件夹重新登录即可

2. 无头模式:HEADLESS

  • 场景:部署在服务器上批量采集,或者你只是不想让浏览器窗口一直占着桌面
  • 改动:保持HEADLESS = True(默认),程序后台静默运行
  • 效果:不弹窗口、省资源、不打扰你。唯一例外:小红书扫码登录总不通过时,把它临时改成False,让浏览器弹出来手动过一遍滑动验证码,登录成功后再改回去

3. 代理 IP 轮换:ENABLE_IP_PROXY + IP_PROXY_POOL_COUNT

  • 场景:采集量大、请求频繁,担心触发平台风控
  • 改动:把ENABLE_IP_PROXY设为True,IP_PROXY_POOL_COUNT按强度定池子大小(轻度 2~3 个,重度 10 个以上),前提是本机装好 Redis
  • 效果:程序从代理服务商拉取 IP → 存入 Redis 缓存 → 组建代理池 → 每次请求随机取用,整体流程见下图,详细说明在 docs/代理使用.md

MediaCrawler-new代理IP池工作流程图:启动爬虫、从代理网站拉取IP、存入Redis、创建代理池并随机取用

操作分两步。第一步,在代理服务商后台生成 API 提取链接,复制其中的key和crypto两个参数:

第二步,把这两个参数写进环境变量(或直接填进代码),位置在 proxy/proxy_ip_provider.py 的末尾:

4. 评论爬取开关:ENABLE_GET_COMMENTS

  • 场景:你的分析对象是评论区(口碑、情绪、词频)
  • 改动:把ENABLE_GET_COMMENTS从False改为True
  • 效果:默认它只抓帖子本身的信息,打开后评论会一并落盘;同理,想直接出 Excel 能打开的表格,把SAVE_DATA_OPTION改成"csv"即可,不用自己转格式

报错先对一下这四个

  1. 现象:爬抖音报execjs._exceptions.ProgramError: SyntaxError: 缺少 ';'原因:机器上没有 Node.js 环境,抖音的 JS 签名函数跑不起来怎么办:安装 Node.js v16.8.0 及以上版本,重跑

  2. 现象:报playwright TimeoutError: Timeout 30000ms exceeded原因:网络不通,浏览器加载不出目标页面怎么办:检查本机网络、是否开了代理工具、能否正常打开目标平台

  3. 现象:刚开始能爬到数据,跑一段时间后数据突然拿不到了原因:账号触发了平台风控机制怎么办:⚠️ 立刻降速——把MAX_CONCURRENCY_NUM(默认 4)和CRAWLER_MAX_NOTES_COUNT都调小,硬扛的后果是账号被限

  4. 现象:不想搜关键词,只想按指定帖子采集原因:这是用法问题不是故障怎么办:把帖子 ID 填进 config/base_config.py 里对应平台的列表(如XHS_SPECIFIED_ID_LIST、DY_SPECIFIED_ID_LIST),然后运行python main.py --platform xhs --lt qrcode --type detail

更多运行问题可以查 docs/常见问题.md,大部分报错那里有现成答案;手机号登录的完整链路见 docs/手机号登录说明.md。

最后,说几句不装的话

到这儿,你手上已经有了一个能重复执行的采集流程:改配置 → 跑命令 → 收数据。建议第一次就按默认值跑(一次 20 条),先确认字段格式符合你的分析需求,再逐步加大数量、调高并发,给自己业务的量找一个不触发风控的节奏。

同时把边界记住:这个项目只用于学习和研究,请勿对任何平台做大规模采集。控制频率、只抓公开数据、尊重用户隐私、遵守平台规则——工具本身是中立的,分寸在使用它的人身上。省下来的时间,留给真正有价值的分析本身。

【免费下载链接】MediaCrawler-new项目地址: https://gitcode.com/GitHub_Trending/me/MediaCrawler-new

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

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

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

立即咨询