ARTICLE DETAIL

资讯详情

深耕网站建设、视觉设计与SEO优化的一线实战洞察。

MediaCrawler:跨平台数据采集五分钟快速上手指南

MediaCrawler:跨平台数据采集五分钟快速上手指南 MediaCrawler跨平台数据采集五分钟快速上手指南【免费下载链接】MediaCrawler项目地址: https://gitcode.com/GitHub_Trending/mediacr/MediaCrawler需要同时采集小红书、抖音、B站、微博、快手的帖子和评论但每个平台的接口签名和风控机制都不一样MediaCrawler 是一个基于 Playwright 浏览器自动化的跨平台数据采集工具覆盖上述五个平台的关键词搜索、指定内容抓取和评论采集。读完这篇文章你能在五分钟内跑通第一个采集任务并掌握代理 IP 池、登录方式和数据导出的完整配置方法。 项目定位一套代码做五个平台的跨平台数据采集MediaCrawler 是一个 Python Playwright 技术栈的开源爬虫项目支持小红书xhs、抖音dy、快手ks、B站bili、微博wb五个平台的内容与评论采集。它的核心思路是用浏览器代替逆向工程用 Playwright 驱动真实浏览器模拟用户操作再在页面上下文里执行 JS 表达式拿到加密请求参数抖音的 Sign 函数就放在 libs/ 目录下你不需要自己去复现各平台的签名算法。采集结果可以输出为 json、csv 或写入 MySQL 数据库。各模块的职责划分见项目代码结构说明。 核心能力拆解Playwright 如何解掉跨平台采集的问题浏览器自动化绕过签名逆向平台返回数据前要求的加密参数MediaCrawler 不逆向算法而是让登录后的浏览器上下文直接执行页面 JS 取出来。同时项目内置了 libs/stealth.min.js 用于抹除浏览器自动化特征降低被风控识别的概率。五个平台共用一套命令行每个平台的爬虫都是 media_platform/ 下的一个实现类main.py 通过工厂模式按平台名分发所以切换平台、登录方式和采集类型只靠三个参数--platformxhs / dy / ks / bili / wb、--ltqrcode / phone / cookie、--typesearch / detail / creator不传参数时读取配置文件里的默认值。三种登录方式状态默认缓存二维码、手机号、Cookie 三种登录方式都支持其中手机号登录依赖配套的短信转发服务。配置里SAVE_LOGIN_STATE默认为 True首次登录成功后会话保存在 browser_data 目录之后启动不再重复登录。数据导出三种方式任选SAVE_DATA_OPTION支持 csv、json、db 三种取值前两者写到 data/ 目录db 模式通过 Tortoise ORM 连接 MySQL也可以改配 sqlite连接串在 config/db_config.py 里。 上手路径三步跑通第一个跨平台数据采集任务第一步克隆仓库并装好 Python 环境和浏览器驱动把仓库克隆下来git clone https://gitcode.com/GitHub_Trending/mediacr/MediaCrawler 后进入目录创建虚拟环境并安装依赖。抖音的加密参数依赖 Node.js v16.8.0建议一并装好否则会报 execjs 错误。python3 -m venv venv source venv/bin/activate pip3 install -r requirements.txt playwright install执行完没有任何报错、Playwright 下载完浏览器内核就算就绪。第二步改配置文件里的几个关键参数打开 config/base_config.py关注这四个参数关键词、采集类型、保存方式、数量上限其余保持默认即可。KEYWORDS python,golang # 搜索关键词逗号分隔 CRAWLER_TYPE search # search 搜索 / detail 指定ID / creator 创作者 SAVE_DATA_OPTION json # csv / json / db CRAWLER_MAX_NOTES_COUNT 20 # 单次采集的帖子数量上限第三步运行采集扫码登录首次用二维码登录时把配置里的HEADLESS改为 False这样浏览器窗口能显示二维码平时跑任务再改回 True 无头运行。python main.py --platform xhs --lt qrcode --type search弹出的浏览器里用小红书 APP 扫完码程序会自动开始搜索并把帖子、评论写入 data/ 目录任务结束你看到的是按平台分文件的 json 数据。⚙️ 进阶用法代理 IP 池、关键词过滤与指定 ID 采集按指定帖子 ID 列表采集不想要搜索结果而是盯住某几条内容时把帖子 ID 填进对应平台的*_SPECIFIED_ID_LIST如XHS_SPECIFIED_ID_LIST、BILI_SPECIFIED_ID_LIST命令行换成--type detail程序只抓列表内的帖子及其评论。按关键词过滤评论COMMENT_KEYWORDS是一个列表配置后只保留包含这些词的评论其余直接丢弃。适合做口碑统计时预先筛掉无关评论减少后续清洗量。启用代理 IP 池对抗单 IP 风控采集量大时单个出口 IP 很容易被限流。项目内置了完整的代理池调代理商 API 取 IP写入 Redis 缓存并记录过期时间池子取空时自动从缓存或接口补货。整体流程如下图MediaCrawler跨平台数据采集代理IP池工作流程图启用分四步装好 Redis 并设置密码密码通过环境变量REDIS_DB_PWD传入在代理商后台生成 IP 提取链接拿到其中的 key 和 crypto 两个参数把这两个值写入环境变量也可以直接改 proxy/proxy_ip_provider.py 里的默认值把配置里的ENABLE_IP_PROXY置为 TrueIP_PROXY_POOL_COUNT设为池子大小默认 2。池子的取用逻辑在 proxy/proxy_ip_pool.py带有效期校验和失败重试完整图文步骤见代理使用说明。注意接口取 IP 是按次计费的池子别开太大。手机号登录与短信转发没有手机在身边扫码时可以走手机号登录项目自带 recv_sms_notification.py作为本地 HTTP 服务接收验证短信配合 SmsForwarder 之类的转发工具使用具体见手机号登录说明。 典型工作流从竞品监控到研究样本采集内容运营日常竞品内容监控把KEYWORDS设成竞品品牌名和产品词CRAWLER_MAX_NOTES_COUNT设成每日需要的样本量用 crontab 挂一个定时任务按天跑 search 任务保存方式选 json 或 db定期导出进表格或 BI 工具。价值五个平台的数据落在同一套目录结构和字段模型下跨平台对比不需要再写转换脚本。研究者多平台事件样本收集选定微博、抖音、小红书等平台依次跑 search 任务用COMMENT_KEYWORDS按研究主题预筛评论SAVE_DATA_OPTION db入库方便后续做时序和统计。价值同一份配置换平台参数就能复用样本收集的工作量基本只剩等待。内容创作者定向热点参考采集把收集到的高质量帖子 ID 填进对应的*_SPECIFIED_ID_LIST用--type detail跑一遍拿全这些帖子的正文和评论翻看评论数据观察用户对同类内容的真实反馈。价值不做全量搜索定向把目标内容吃透比漫无目的地翻搜索结果快得多。⚠️ 使用建议与避坑并发控制MAX_CONCURRENCY_NUM默认 4建议维持在 3–5再高只是加快触发风控。数量上限CRAWLER_MAX_NOTES_COUNT默认 20首次跑通后再逐步上调别一上来就拉满。无头模式登录阶段必须HEADLESS False才能看到二维码和滑块跑量阶段再开 True。更换账号删掉项目根目录的 browser_data 目录即可下次运行重新登录。网络问题报 Timeout 超时时优先检查本机网络与代理设置。合规边界README 明确声明本项目仅供学习研究请勿对平台做大规模采集账号一旦频繁被风控换 IP 池和降频都只是缓解。❓ 常见问题跑起来之后的 6 个高频问题Q爬抖音报 execjs ProgramError: SyntaxErrorA本机缺 Node.js。安装 v16.8.0 这个版本即可execjs 依赖它来跑加密脚本。Q如何更换登录账号A删除项目根目录下的 browser_data/ 目录下次运行会重新走登录流程。Q刚开始能正常采数据过一段时间就失效了A多半是账号触发了平台风控。降并发、加采集间隔、启用代理 IP 池并避免高频大批量请求。Q怎么改采集的关键词A改 config/base_config.py 里的KEYWORDS多个关键词用英文逗号分隔。Q怎么只抓某一条帖子A把帖子 ID 填进对应平台的*_SPECIFIED_ID_LIST命令行用--type detail。Q报 playwright Timeout 30000ms exceededA页面加载超时检查网络环境必要时切换网络或配置代理后重试。 后续方向README 没有列明确的路线图但五个平台都基于 base/base_crawler.py 里的抽象类实现新增平台按同一套接口接入即可项目也欢迎提交 PR 扩充平台能力。先克隆仓库按上面三步跑一个小红书搜索任务等 data/ 目录里出现第一批 json 文件就说明环境通了。之后调关键词和数量上限适配自己的任务遇到报错先翻常见问题多数都是环境或网络层面的问题。【免费下载链接】MediaCrawler项目地址: https://gitcode.com/GitHub_Trending/mediacr/MediaCrawler创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表