资讯动态

MediaCrawler 使用指南:五大新媒体平台数据采集,免逆向爬虫怎么跑通

发布时间:2026/10/26 1:50:29 来源:尧图企业网站定制
MediaCrawler 使用指南五大新媒体平台数据采集免逆向爬虫怎么跑通【免费下载链接】MediaCrawler-new项目地址: https://gitcode.com/GitHub_Trending/me/MediaCrawler-new一句话定位MediaCrawler 是一个面向新媒体平台的 Python 数据采集工具能从小红书、抖音、快手、B站、微博批量抓取帖子、视频、图片以及评论、点赞、转发等互动数据。它的核心卖点是浏览器搭桥用 Playwright 保留登录成功后的浏览器环境直接在页面里执行 JS 表达式拿到平台的加密参数免去了逐个逆向前端加密算法的麻烦。能力全景MediaCrawler 对五大平台xhs / dy / ks / bili / wb的能力覆盖是齐整的二维码登录、Cookie 登录、关键词搜索、指定内容 ID 爬取、登录状态缓存、数据保存、IP 代理池。小红书额外支持创作者主页模式CRAWLER_TYPE creatorB站额外支持视频下载CRAWLER_TYPE video_download在配置文件设置。数据内容包括帖子/视频基础信息、图片、评论、点赞、转发评论默认不采集由ENABLE_GET_COMMENTS开关控制。登录方式三种qrcode 扫码以小红书为例终端会直接打印二维码无头模式下也能扫、phone 手机号短信转发回填见 手机号登录说明、cookie。保存方式三种json / csv 都落在data/目录db写入关系型数据库默认 MySQL可在 config/db_config.py 换成 sqlite。从零跑起来先克隆仓库装依赖除 Python 依赖外还要装 Playwright 的浏览器驱动最后一行别忘了git clone https://gitcode.com/GitHub_Trending/me/MediaCrawler-new cd MediaCrawler-new python -m venv venv source venv/bin/activate pip install -r requirements.txt playwright install然后打开config/base_config.py只动三处PLATFORM是要爬的平台默认 xhs、KEYWORDS是逗号分隔的多个关键词、LOGIN_TYPE是登录方式默认 qrcode。跑完后你会看到终端打印出登录二维码用手机 App 扫码后程序开始分页拉搜索结果、逐条抓笔记详情结束后data/目录下生成 json 数据文件项目根目录还会多出browser_data/子目录里面缓存着该平台的登录状态。如果爬抖音时报execjs ... 缺少 ;之类的错误是缺 nodejs装上推荐 v16.8.0再跑即可。配置即场景所有配置集中在config/base_config.py每个场景真正要改的只有两三行。监控竞品创作者主页只有小红书支持 creator 模式先把目标主页 ID 填进列表命令行再带上--type creatorCRAWLER_TYPE creator XHS_CREATOR_ID_LIST [63e36c9a000000002703502b]顺手把ENABLE_GET_COMMENTS设为 True连评论一起抓能直接看出竞品内容下的讨论热度。批量采集并写入数据库长期做行业数据收集时json 不好查询把存储层切到 dbKEYWORDS Python教程,数据分析 SAVE_DATA_OPTION db CRAWLER_MAX_NOTES_COUNT 100首次运行前用python db.py建一次表它会自动建库并生成表结构数据库密码从RELATION_DB_PWD环境变量读取连接串在config/db_config.py顶部。代理池开关与 Redis 缓存配置采集量大了就打开 IP 代理池ENABLE_IP_PROXY True IP_PROXY_POOL_COUNT 5代理池用 Redis 缓存已拉取的 IP 和过期时间连接配置是config/db_config.py里的REDIS_DB_HOST/REDIS_DB_PWD所以要先装好 Redis 并设置密码。 当前服务商是极速HTTP在 IP 提取页生成 API 链接后取出 key、crypto 两个参数写入小写命名的环境变量export jisu_keyyour_key export jisu_cryptoyour_crypto服务商 IP 提取页面生成 API 链接后只需要其中的 key 与 crypto 两个参数MediaCrawler 代理 IP 池工作流程 Redis 缓存从启动爬虫到取到可用 IP服务商拉取 → Redis 缓存 → 代理池抽取的完整流程架构速览项目结构很规整看清几个主目录就够了MediaCrawler/ ├── media_platform/ # 五大平台爬虫实现一平台一目录 ├── store/ # 各平台数据模型与存储实现json/csv/db ├── proxy/ # IP 代理池与代理服务商接口 ├── tools/ # 滑块识别、时间处理、UA 生成等工具函数 ├── config/ # 基础配置 base_config.py 数据库配置 ├── base/ # AbstractCrawler 等抽象基类 ├── libs/ # stealth.min.js 反检测脚本、抖音 sign JS ├── main.py # 命令行入口与 CrawlerFactory 工厂 └── db.py # Tortoise-ORM 初始化与建表踩坑与排障抖音报 execjs SyntaxError⚠️ 日志里出现execjs._exceptions.ProgramError: SyntaxError: 缺少 ;大概率是缺 nodejs 环境——抖音的 sign 参数要靠本地 JS 引擎执行。先node -v看一下版本不对就装 v16.8.0 后重跑。扫码登录后如何复用会话每次都要扫码的话先看config/base_config.py里的SAVE_LOGIN_STATE默认就是 True登录状态缓存在browser_data/目录。如果跑一阵子就失效多半是 cookie 过期或触发风控把HEADLESS临时设为 False打开浏览器看真实页面状态。要换账号更简单整个删掉browser_data/目录重跑即可。扫码一直不成功终端已经打印二维码、扫完仍不通过或者直接弹滑块验证就把HEADLESS设为 False 打开浏览器手动过一次登录状态会缓存下来之后可以恢复无头模式。看到playwright ... Timeout 30000ms这种超时则先检查网络连接本身是否正常。开始能爬、过段时间全失效这是典型的平台风控信号。先调低MAX_CONCURRENCY_NUM默认 4不够再加开代理池。项目在 常见问题 里也反复提醒不要对平台做大规模爬虫账号和 IP 被封是常态。扩展与进阶想改源码的话MediaCrawler 的入口很集中四处看一遍就够抽象层在base/base_crawler.py定义了 AbstractCrawler、AbstractLogin、AbstractStore 三个抽象类新平台必须实现它们。main.py里的CrawlerFactory.CRAWLERS字典是唯一注册点加一行键值对和 import命令行参数就自动支持新平台。平台实现照抄media_platform/xhs/的五文件结构core.py 主流程、login.py 登录、client.py 请求数据模型和存储实现放store/xhs/用 db 存储时还要在db.py的get_platform_models里注册模型。想换代理服务商实现proxy/proxy_ip_provider.py里的 ProxyProvider 抽象类再把文件末尾的单例IpProxy替换掉。边界与收尾频率上MAX_CONCURRENCY_NUM和CRAWLER_MAX_NOTES_COUNT默认值都压得比较低长时间任务不建议大幅调高风控是真实存在的。用途上README 声明本仓库仅供学习和研究、禁止商业用途评论、创作者数据里含有用户表达与隐私字段导出和分享时注意处理。本地文件上browser_data/缓存着登录态别把它提交进版本库手机号登录也有每日发送上限小红书一天约 10 条短信够用就好。【免费下载链接】MediaCrawler-new项目地址: https://gitcode.com/GitHub_Trending/me/MediaCrawler-new创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑