1、立项背景和目标
群接龙是社区团购和社群电商广泛使用的订单管理工具,大量中小商家通过群接龙发布团购活动、收集订单。但群接龙后台存在明显痛点:商家数据无法批量导出,运营人员需要手动一个一个商家的复制粘贴订单,费时费力且容易出错;后台登录态容易过期,操作中断后需重新扫码登录;每次导出后无法记录哪些商家已处理,下次需要重复导出浪费算力。本项目的目标是:实现群接龙后台订单的自动化批量导出,支持按搜索词筛选商家、自动记录导出进度、导出文件自动备份至坚果云并推送到企业微信群,全程无人值守运行。
2、软件功能、核心功能模块的介绍
工具涵盖以下核心模块:登录态管理——首次运行需扫码登录,自动保存auth.json复用登录态,过期后自动提醒重新登录;商家列表采集——根据用户配置的搜索词(如“水果”、“生鲜”等品类关键词),自动滚动加载下拉列表中的所有商家名称,完整采集不遗漏;增量导出机制——自动读取“已导出商家.txt”文件,跳过已处理商家,避免重复劳动;状态筛选——自动将活动状态筛选为“已结束”,只导出已完成可结算的订单;批量导出——全选当前商家所有订单,点击批量导出,自动等待弹窗并下载Excel文件;多平台分发——导出文件自动上传至坚果云(WebDAV协议)备份,并通过企业微信机器人推送到指定群,团队成员即时获取数据。
3、业务流程、功能路径描述
用户配置好config.py(搜索词、坚果云账号、企业微信Webhook地址等)→ 双击运行脚本 → 首次运行弹出浏览器,扫码登录群接龙后台 → 脚本自动进入群接龙订单管理页面 → 筛选“已结束”状态 → 在商家搜索框中输入搜索词 → 滚动加载全部匹配商家列表 → 读取“已导出商家.txt”过滤已处理商家 → 按顺序点击商家名称 → 勾选全选复选框 → 点击批量导出按钮 → 处理弹窗确认导出 → 自动下载Excel文件 → 文件上传到坚果云 → 文件推送至企业微信群 → 记录商家名到“已导出商家.txt” → 继续处理下一个商家 → 全部完成后退出。
1、整体架构和设计思路,不同模块使用的技术栈
项目采用模块化设计,技术栈为Python 3 + Playwright自动化框架 + Requests网络请求库。自动化核心层使用Playwright的同步API驱动Chrome浏览器,模拟真实用户操作,包括点击、输入、下拉滚动、弹窗处理等,通过expect_download监听并捕获下载事件。数据持久层使用本地文件系统存储进度(已导出商家.txt)和登录态(auth.json),采用断点续传设计,脚本中断后重新运行自动从断点继续。分发层通过Requests库实现:使用WebDAV协议(HTTP Basic Auth)与坚果云交互,创建目录并上传文件;使用企业微信文件上传接口获取media_id,再通过Webhook发送文件消息。容错层为每个关键操作设置了最多3次重试机制,超时时间从10秒到60秒不等,配合随机延时(0.5-3秒)降低被反爬的风险。
2、“我”的负责模块和结果(尽可能量化)
(请根据实际情况替换) 本人独立完成该项目的全流程开发与测试。实现了:单个商家 平均导出时间从_手工操作约5分钟_ 压缩至 60-90秒 ,全自动无人值守;支持_搜索词动态配置_ ,可覆盖不同品类商家群体;针对群接龙后台的_下拉列表懒加载机制_ ,实现了滚动增量采集算法,可完整获取 数百个 商家名称(测试环境单次采集 200+ 商家);设计了_增量导出机制_ ,避免已处理商家的重复导出,减少资源浪费;实现了_导出的异常处理与日志系统_ ,每次运行生成独立的日志文件(export_YYYYMMDD.log),方便追踪问题。
3、“我”遇到的难点、坑,和解决方案
难点一:登录态管理和续期。 群接龙后台登录态有效时间较短(约几小时),且无法通过账号密码直接登录,必须扫码。解决方案:首次运行通过context.storage_state(path=AUTH_FILE)保存完整的浏览器存储状态(cookies + localStorage),后续启动先尝试加载auth.json访问后台;通过检查页面URL是否包含login或signin关键词判断登录态是否有效,若失效则拉起浏览器重新扫码登录,同时输出提示让用户手动扫码,实现无人值守与人工介入的平滑切换。
难点二:商家下拉列表是懒加载的,滚动才加载更多。 群接龙的商家搜索下拉使用cdk-virtual-scroll-viewport虚拟滚动,直接page.locator无法获取全部选项。解决方案:先定位滚动容器,通过container.evaluate("el => el.scrollTop = el.scrollHeight")循环滚动到底部,每次滚动后等待0.5-0.8秒让新数据渲染;同时持续采集nz-option-item的title属性存入Set去重,直到两次采集的数