公司动态
MediaCrawler 爬虫实测手记:五大平台数据采集从 0 到 1 的完整过程
MediaCrawler 爬虫实测手记五大平台数据采集从 0 到 1 的完整过程【免费下载链接】MediaCrawler-new项目地址: https://gitcode.com/GitHub_Trending/me/MediaCrawler-new上周我接到一个市场调研的活儿需要把小红书、抖音、B站上某个话题近一个月的热门内容、评论和点赞数拉下来做分析。本以为一个下午就能搞定结果光是处理各种平台的登录验证就折腾了两天。直到同事把MediaCrawler这个开源爬虫项目丢给我——一个用 Playwright 技术、支持小红书/抖音/快手/B站/微博五大平台数据采集的工具我才算真正把「采集数据」这件事从手动复制粘贴里解放出来。这篇文章就是我的完整上手记录从安装到跑通再到几个让我眼前一亮的高级用法。没有它的那些日子我都在干什么做内容分析的人应该都懂平台没有公开的批量数据接口你只能一个个页面翻、一条条手动复制。更麻烦的是不同平台的数据结构完全是两套语言——小红书笔记有「赞藏评」三件套抖音看的是完播和转发B站又是硬币和三连想统一成一份表格得先在 Excel 里手工清洗半天。比数据格式更头疼的是反爬。我在浏览器里正常浏览毫无问题一旦脚本去请求接口要么弹出滑块验证要么直接返回一串看不懂的加密参数。我也试过自己逆向但平台的加密逻辑三天两头就变昨天能跑的代码今天大概率就废了。所以当我在项目文档里看到 MediaCrawler 的原理说明时眼睛一下就亮了它用 Playwright 搭桥保留登录成功后的浏览器上下文环境通过执行 JS 表达式来获取加密参数根本不需要复现核心加密代码逆向难度直接降了一个量级。从装好到跑通第一份数据MediaCrawler 的安装比我想象中简单没有依赖一堆奇奇怪怪的库跟着 README 一步步来就行git clone https://gitcode.com/GitHub_Trending/me/MediaCrawler-new cd MediaCrawler-new python -m venv venv source venv/bin/activate pip3 install -r requirements.txt playwright install这里要提醒一句playwright install会下载浏览器内核网络不好的话可能有点慢耐心等它跑完就行。装完之后打开config/base_config.py三行配置就能开始第一次采集PLATFORM xhs # xhs | dy | ks | bili | wb KEYWORDS python,golang LOGIN_TYPE qrcode # qrcode | phone | cookie然后执行python main.py --platform xhs --lt qrcode --type search程序会弹出一个浏览器窗口和二维码我用手机小红书 App 扫码登录回车确认之后爬虫就开始自动工作——搜索关键词、翻页、抓笔记信息一气呵成。第一次看到data/目录下生成 JSON 文件、里面整整齐齐躺着笔记标题、作者、点赞数和发布时间的时候我确实有点小激动以前要复制一下午的数据现在一杯咖啡的时间就搞定了。中间也遇到一个小插曲第一次跑抖音的时候报了个execjs的语法错误查了项目文档里的常见问题才知道抖音的签名逻辑需要 Node.js 环境装上v16.8.0版本就正常了。这种问题在docs/常见问题.md里都有记录建议跑之前先扫一眼。顺带一提登录状态会被自动缓存到browser_data目录下次启动不用重新扫码这一点非常贴心。原来还能这样用场景一指定 ID 精确采集不用再靠关键词碰运气做竞品分析时我经常需要反复抓取同几个头部账号的某几篇爆文数据。MediaCrawler 支持直接指定帖子 ID 爬取把笔记或视频的 ID 填进配置列表就行XHS_SPECIFIED_ID_LIST [6422c2750000000027000d88, 64ca1b73000000000b028dd2] DY_SPECIFIED_ID_LIST [7280854932641664319]再配合--type detail运行就能精准拿到这几条内容的完整数据和评论不需要从搜索流里大海捞针。文档里对应的说明可以参考docs/项目代码结构.md各平台指定 ID 的配置项写得很清楚。场景二打开代理 IP 池大规模采集不再提心吊胆这是我最看重的功能。之前自己写爬虫最怕的就是 IP 被封。MediaCrawler 内置了一整套代理 IP 管理系统从 IP 获取、Redis 缓存到池化管理都有现成的实现MediaCrawler 代理IP池管理的完整工作流程开启方式也简单在配置里把开关打开ENABLE_IP_PROXY True IP_PROXY_POOL_COUNT 5系统默认对接的是极速 HTTP 服务商密钥通过环境变量jisu_key、jisu_crypto传入避免了把密钥硬编码在代码里的安全隐患这块的具体写法在proxy/proxy_ip_provider.py里能看到IP 提取之后会先存进 Redis带过期时间自动清理爬虫只从池子里拿还「活着」的 IP这套机制比我自己写的那种「一个 IP 用到死」的土办法靠谱太多。场景三评论数据一键开启舆情分析顺手多了我这次调研里最费时间的就是评论采集。MediaCrawler 默认不抓评论但只需要在配置里改一个开关ENABLE_GET_COMMENTS True重跑一遍程序评论就跟着笔记一起落盘了。配合CRAWLER_MAX_NOTES_COUNT控制采集量、MAX_CONCURRENCY_NUM调节并发数我可以比较从容地在效率和稳定性之间找到平衡不用再担心把平台请求打得太狠。数据保存方面也支持多种落盘方式SAVE_DATA_OPTION可以选json、csv或者存进关系型数据库config/db_config.py里配置好 MySQL 连接选db即可。CSV 直接丢给 ExcelJSON 喂给 Python 分析脚本按需切换非常方便。我踩过的坑希望你别再踩既然是实测有几个坑值得说道说道抖音必须装 Node.js。这是我最先踩的报错信息里写着execjs缺分号一度以为是代码问题实际上是环境缺了 Node 运行时装上v16.8.0就安静了。爬着爬着突然没数据了先别急着怀疑代码。大概率是账号触发了平台风控。MediaCrawler 的常见问题文档里写得很直白请勿大规模对平台进行爬虫。我后来把并发数调低、每次采集量减少情况就好多了。想换登录账号删掉browser_data目录即可。登录状态缓存虽然方便但缓存里带着旧账号的信息换号时记得清理。如果报 playwright 超时先检查一下网络环境是不是开了代理工具这个干扰很容易被忽略。其实这些坑基本都在项目自带的docs/常见问题.md里跑之前花五分钟读一遍能省下不少排查时间。写在最后几周用下来我的感受是MediaCrawler 最适合的是有大量重复性数据采集需求、但不想把精力耗在逆向和反爬上的人——无论是做市场调研、竞品分析还是内容创作选材它都能把采集环节压缩到几行配置加一条命令。它的边界也很清楚数据采集只是第一步后续的分析、可视化还得靠你自己来搭另外它目前对「创作者主页」的支持主要在小红书其他平台的特定功能还在完善中。最后说一句负责任的话这个项目官方定位是学习和研究用途。数据采集这件事请一定遵守相关法律法规和各平台的用户协议控制好采集频率别拿它做超出合理范围的事情。工具本身是中性的怎么用取决于使用它的人。如果你也正被手动采集折磨不妨克隆下来跑一遍试试说不定会和我一样打开一扇新的大门。【免费下载链接】MediaCrawler-new项目地址: https://gitcode.com/GitHub_Trending/me/MediaCrawler-new创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考