
MediaCrawler多平台数据采集 5 分钟上手【免费下载链接】MediaCrawler-new项目地址: https://gitcode.com/GitHub_Trending/me/MediaCrawler-newMediaCrawler 是一个多平台数据采集框架用于批量抓取小红书、抖音、快手、B 站、微博的笔记、视频、评论与互动数据。它通过 Playwright 保留登录后的浏览器上下文在页面内执行 JS 获取 X-S、x-bogus 等加密参数免去复现核心加密代码。本文带你跑通 5 分钟首次采集、搭好 Redis 代理池与密钥注入并完成三个递进抓取任务。 能力速览多平台采集功能矩阵平台Cookie 登录二维码登录创作者主页关键词搜索指定 ID 爬取登录状态缓存IP 代理池小红书✅✅✅✅✅✅✅抖音✅✅—✅✅✅✅快手✅✅—✅✅✅✅B 站✅✅—✅✅✅✅微博✅✅—✅✅✅✅与同类工具最大的差异是浏览器搭桥登录成功后不关闭浏览器后续请求直接从该上下文中执行 JS 取签名加密参数由平台自己的代码算出逆向难度从读算法降到调函数。⚡ 装完就能跑从克隆到第一次爬取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 chromium最小可运行命令python main.py --platform xhs --lt qrcode --type search运行后浏览器窗口会弹出登录页扫码确认后开始抓取数据按data/xhs/目录落盘为 json/csv 文件。第一次跑不通通常是两个原因把 config/base_config.py 里的HEADLESS改回False手动过滑动验证码抖音平台依赖 Node.jsv16.8.0缺失会抛execjs报错。 核心机制拆解带 Redis 缓存的代理 IP 池代理池的取值链路如下启动爬虫时判断ENABLE_IP_PROXY启用则按IP_PROXY_POOL_COUNT建池并校验 IP 可用性取 IP 时优先读 Redis 缓存key 为JISUHTTP_ip_端口_账密过期时间跟随 IP 时效自动删除缓存不足时调用代理商接口fetchips补货当前实现为极速 HTTP服务商见 proxy/proxy_ip_provider.py拿到后写回 Redis池内 IP 分配给 Playwright 与 httpx 两种客户端格式分别注入浏览器与 HTTP 请求IP 失效即淘汰下次自动补位全程无需手动干预密钥通过环境变量注入不要写死在配置里提交export jisu_key你的key export jisu_crypto你的crypto极速 HTTP 平台的 IP 提取页红框即 key 与 crypto 参数代理功能依赖 Redis 并需设置密码连接配置在 config/db_config.py。高频配置速查多平台爬虫参数表配置项默认值一句话说明PLATFORMxhs采集平台可选 xhs/dy/ks/bili/wbKEYWORDSpython,golang关键词搜索用英文逗号分隔多词LOGIN_TYPEqrcode登录方式qrcode/phone/cookieCRAWLER_TYPEsearchsearch 关键词、detail 指定 ID、creator 主页仅小红书HEADLESSTrue首次登录与过验证码必须设为 FalseSAVE_LOGIN_STATETrue复用登录态避免反复扫码CRAWLER_MAX_NOTES_COUNT20单关键词最多抓取的笔记数MAX_CONCURRENCY_NUM4并发爬虫数量ENABLE_GET_COMMENTSFalse是否连评论一起抓SAVE_DATA_OPTIONjson落盘方式json/csv/dbENABLE_IP_PROXYFalse开启 IP 代理池需先配 Redis密钥以环境变量读取的写法见下图os.getenv保证配置文件里不出现明文proxy/proxy_ip_provider.py 中通过环境变量读取 key 与 crypto三个递进任务从关键词抓取到入库任务 A抓某关键词下 100 条笔记并导出 CSV# config/base_config.py KEYWORDS python编程 CRAWLER_TYPE search CRAWLER_MAX_NOTES_COUNT 100 SAVE_DATA_OPTION csvpython main.py --platform xhs --type search任务 B持续追踪 5 个竞品账号的新发布XHS_CREATOR_ID_LIST [id1, id2, id3, id4, id5] CRAWLER_TYPE creator ENABLE_GET_COMMENTS Truepython main.py --platform xhs --type creatorcreator 模式目前仅小红书支持见能力矩阵配合系统定时任务周期性执行即可。任务 C入库百万级评论做后续分析SAVE_DATA_OPTION db # 写入 MySQL ENABLE_GET_COMMENTS True MAX_CONCURRENCY_NUM 8 # config/db_config.pyRELATION_DB_URL 指向 MySQL密码走环境变量python main.py --platform xhs --type searchdb模式下启动前会自动执行db.init_db()ORM 定义在 db.py。性能与稳定性调优MAX_CONCURRENCY_NUM 8提高吞吐但账号触发风控的概率同步上升CRAWLER_MAX_NOTES_COUNT 50压缩单任务体量降低连续请求压力ENABLE_GET_COMMENTS False请求量直接砍半只要正文时务必关闭IP_PROXY_POOL_COUNT 5池子越大越抗失效也越耗代理额度HEADLESS True批量跑无头省资源但首次登录留 FalseSAVE_DATA_OPTION db大任务避免 json 文件反复读改写所有参数都建议先用小批量CRAWLER_MAX_NOTES_COUNT调到个位数验证登录态与代理可用性再逐步放量。MediaCrawler 代理 IP 池工作流程图从启用判断到 Redis 缓存、建池取 IP 的完整流程数据存储选型格式适合量级后续怎么用json百~千条data/xhs/下直接读文件脚本解析、快速预览csv千~万条Excel/BI 工具直接导入做透视与可视化dbMySQL万条以上按 config/db_config.py 连库查询做聚合分析文件命名规则为{crawler_type}_{store_type}_{日期}如search_contents_20240114.csv。选格式只看下游用途给人看选 csv给程序看选 json要反复关联查询再上 db不必默认上数据库。踩坑速查4 个高频报错扫码后一直转圈怎么办把HEADLESS False让浏览器可见手动完成滑动验证码若登录态已损坏删除项目下的*_user_data_dir浏览器缓存目录后重新扫码。数据存到哪个目录csv/json 模式写入data/{平台名}/如data/xhs/文件名带类型与日期db 模式不产生文件数据进 MySQL 的media_crawler库。抖音报 execjs ProgramError 是什么原因缺少 Node.js 运行环境libs/douyin.js的 sign 函数由 execjs 调用安装 v16.8.0 后重试。刚能爬、过段时间就失效了账号大概率触发平台风控降低MAX_CONCURRENCY_NUM、拉长任务间隔或更换账号删浏览器缓存目录重新登录。Timeout 30000ms exceeded则优先检查网络出口与代理是否连通。项目结构与扩展入口MediaCrawler-new/ ├── main.py # 入口CrawlerFactory 按平台路由 ├── media_platform/ # xhs/douyin/kuaishou/bilibili/weibo 各平台实现 ├── store/ # 各平台 csv/json/db 存储实现 ├── proxy/ # 代理 IP 池provider、pool、Redis 缓存 ├── config/ # base_config.py 与 db_config.py └── tools/ # 滑块验证码、时间等工具函数想加新平台在 media_platform/ 下新建目录实现 base/base_crawler.py 的AbstractCrawler在 main.py 的CrawlerFactory注册平台名想换存储后端改 store/ 下对应平台的*_store_impl.py接口定义见AbstractStore想换代理商只需实现 proxy/proxy_ip_provider.py 中ProxyProvider.get_proxies更多细节见 docs/项目代码结构.md使用边界平台用户协议普遍限制自动化抓取商业使用前自行评估合规风险控制频率小并发、小批量给目标平台留足余量数据仅用于学习与研究涉及个人隐私字段注意脱敏国内代理服务商需实名认证密钥只放环境变量把工具用在刀刃上先验证登录态与代理可用性再谈规模化。MediaCrawler 定位是一套免逆向的五平台采集框架核心价值在浏览器搭桥与代理池这两块基建。克隆项目跑通任务 A 后按 docs/常见问题.md 排错、按 docs/代理使用.md 配代理遇到新问题可直接阅读 README.md 并关注项目更新。【免费下载链接】MediaCrawler-new项目地址: https://gitcode.com/GitHub_Trending/me/MediaCrawler-new创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考