当前位置: 首页 > news >正文

闲鱼智能监控机器人:基于 Playwright 与 AI 的多任务监控分析工具

一、项目概述

闲鱼智能监控机器人是一个借助 Playwright 实现模拟操作、结合 AI 进行过滤分析的闲鱼多任务实时监控与智能分析工具,具备功能完善的 Web 管理界面。它支持可视化任务管理、AI 驱动任务创建、多任务并发、实时流式处理、深度 AI 分析等特性,还能实现即时通知、定时任务调度、Docker 一键部署等,在闲鱼商品监控场景中作用显著。

二、代码结构总览

从项目文件结构来看,主要包含以下几类关键文件和目录,各自承担不同功能,共同支撑项目运行:

ai - goofish - monitor
├── .github/workflows          # GitHub Actions 工作流配置,用于自动化 CI/CD
├── chrome - extension          #  Chrome 扩展相关文件,辅助提取闲鱼登录状态
├── prompts                    # 存放提示词相关内容,用于与 AI 交互时的指令引导
├── src                        # 核心功能代码目录,可能包含业务逻辑实现等
├── static                     # 静态资源目录,如页面样式、图片等,用于 Web 界面
├── templates                  # 模板文件目录,可能用于生成 Web 页面等
├── .env.example               # 环境变量示例文件,复制后配置实际环境变量
├── .gitignore                 # Git 忽略规则文件,指定无需版本控制的文件/目录
├── AUTH_README.md             # 认证相关说明文档
├── DISCLAIMER.md             # 免责声明文档
├── Dockerfile                 # Docker 镜像构建配置文件,用于容器化部署
├── FAQ.md                     # 常见问题解答文档
├── LICENSE                    # 项目许可证文件,规定使用权限等
├── README.md                  # 项目核心说明文档,介绍功能、使用方法等
├── config.json.example        # 配置文件示例,复制后配置实际监控任务等信息
├── docker - compose.yaml       # Docker Compose 配置文件,实现多容器编排部署
├── login.py                   # 登录相关脚本,用于获取闲鱼登录状态
├── prompt_generator.py        # 提示词生成器,为 AI 交互生成合适的提示内容
├── requirements.txt           # Python 依赖包列表,用于安装项目所需库
├── spider_v2.py               # 爬虫核心脚本,负责抓取闲鱼商品数据
└── web_server.py              # Web 服务器脚本,提供 Web 管理界面相关服务

三、核心模块代码结构分析

(一)爬虫模块(spider_v2.py

  1. 功能定位:负责模拟用户操作闲鱼页面,抓取商品数据,是实现监控功能的基础数据来源模块。它模拟真人操作,包含随机延迟、多样用户行为等反爬策略,保障数据获取的稳定性。
  2. 关键逻辑
    • 利用 Playwright 库启动浏览器,模拟登录后访问闲鱼搜索页面。通过page.goto()跳转页面,page.fill() page.click()等方法模拟用户输入、点击等交互,实现搜索商品操作。
    • 配置随机延迟,如在页面操作之间插入time.sleep(random.uniform(2, 5)) (示例,实际可能结合 Playwright 等待机制更优雅实现),模拟真人操作节奏,规避反爬机制。
    • 解析页面元素,提取商品的标题、价格、描述、卖家信息等数据,可能使用page.locator()定位元素,再通过text_content() get_attribute()等方法提取信息,如:
    from playwright.sync_api import sync_playwrightdef crawl_xianyu(keyword):with sync_playwright() as p:browser = p.chromium.launch(headless=False)  # 可根据配置决定是否无头运行page = browser.new_page()# 模拟登录等操作,此处省略具体登录态处理,实际需结合登录模块获取的状态page.goto(f"https://2.taobao.com/search?q={keyword}")  # 闲鱼搜索页面# 随机延迟,模拟真人操作import timetime.sleep(3)  # 提取商品数据items = page.locator('.item J_MouserOnverReq  ')  # 假设商品列表元素定位器for item in items.element_handles():title = item.locator('.J_MemoCtrl').text_content()price = item.locator('.J_price').text_content()# 继续提取其他字段...yield {'title': title, 'price': price}browser.close()
  3. 与其他模块交互:获取login.py提供的登录状态,确保以登录态爬取数据;将抓取到的商品数据传递给 AI 分析模块(可能在src等目录中),进行深度处理。

(二)Web 服务器模块(web_server.py

  1. 功能定位:搭建 Web 管理界面服务,提供可视化操作入口,让用户能通过浏览器管理监控任务、查看运行日志、配置系统参数等,是用户与工具交互的核心模块。
  2. 关键逻辑
    • 使用 Flask 或类似 Web 框架(从功能推测,实际需看代码实现)创建 Web 应用,定义路由,如@app.route('/task_management')对应任务管理页面,@app.route('/system_settings')对应系统设置页面。
    • 实现用户认证,基于 Basic 认证,校验登录用户名和密码(与.env中配置的WEB_USERNAME WEB_PASSWORD关联),保护管理界面安全,示例(Flask 为例):
from flask import Flask, request, Response
import osapp = Flask(__name__)@app.before_request
def check_auth():auth = request.authorizationif not auth or auth.username != os.getenv('WEB_USERNAME') or auth.password != os.getenv('WEB_PASSWORD'):return Response('Unauthorized', 401, {'WWW-Authenticate': 'Basic realm="Login Required"'})@app.route('/')
def index():return "Welcome to AI Goofish Monitor Web Server"
  • 对接任务管理、结果查看、运行日志、系统设置等功能模块,将用户操作转化为对后台任务的创建、启动、停止等指令,同时从其他模块获取数据展示到 Web 界面,如从spider_v2.py获取爬虫运行状态,从 AI 分析模块获取商品分析结果。
  • 与其他模块交互:接收前端页面(基于static templates目录资源渲染)的用户操作请求,调用任务管理相关逻辑(可能在src等目录)执行监控任务;从spider_v2.py prompt_generator.py等模块获取数据,展示任务运行状态、商品监控结果等。

(三)AI 分析模块(结合prompt_generator.py及可能的 AI 调用逻辑)

  1. 功能定位:集成多模态大语言模型,对爬虫模块抓取的商品数据进行深度分析,结合商品图文、卖家画像等筛选出符合用户需求的商品,是实现智能监控的核心模块,让工具具备 “智能” 判断能力。
  2. 关键逻辑
    • prompt_generator.py根据用户创建任务时的自然语言需求,生成合适的 AI 提示词(Prompt),引导 AI 模型进行分析。例如用户需求是 “95 新以上的索尼 A7M4 相机,预算 1 万 3 以内,快门数低于 5000”,会生成包含这些条件的提示内容:
def generate_prompt(user_requirement):prompt_template = "请分析以下闲鱼商品数据,筛选出符合需求的商品:{user_requirement},需结合商品图文、卖家信息等进行判断,给出是否推荐的结论及理由"return prompt_template.format(user_requirement=user_requirement)
  • 调用 AI 模型(如 GPT - 4o 等,通过OPENAI_BASE_URL OPENAI_MODEL_NAME等环境变量配置的接口),传入提示词和商品数据,获取 AI 分析结果,示例(假设使用 OpenAI API 交互,实际可能根据配置的 API 调整):
import openai
import osopenai.api_key = os.getenv('OPENAI_API_KEY')
openai.api_base = os.getenv('OPENAI_BASE_URL')def analyze_with_ai(prompt, product_data):response = openai.ChatCompletion.create(model=os.getenv('OPENAI_MODEL_NAME'),messages=[{"role": "user", "content": f"{prompt},商品数据:{product_data}"}])return response.choices[0].message.content
  • 解析 AI 返回结果,判断商品是否符合需求,提取分析理由等信息,用于后续通知和 Web 界面展示。
  1. 与其他模块交互:接收spider_v2.py传递的商品数据,接收prompt_generator.py生成的提示词;将分析结果传递给web_server.py用于展示,传递给通知模块(如ntfy.sh、企业微信群机器人等相关通知逻辑代码)进行消息推送。

(四)登录模块(login.py

  1. 功能定位:负责获取闲鱼的登录状态,让爬虫能以登录态访问页面,获取更多商品信息、规避部分限制,是保障数据获取全面性和稳定性的基础模块。
  2. 关键逻辑
    • 提供两种获取登录状态的方式,推荐的 Web UI 方式通过引导用户在个人电脑 Chrome 浏览器安装扩展、提取登录状态;备用的脚本方式python login.py会弹出浏览器窗口,让用户扫码登录,成功后生成xianyu_state.json文件保存登录信息,核心代码逻辑(以 Playwright 实现为例):
from playwright.sync_api import sync_playwright
import jsondef get_login_state():with sync_playwright() as p:browser = p.chromium.launch(headless=False)page = browser.new_page()page.goto('https://www.goofish.com/login')  # 闲鱼登录页面# 等待用户扫码登录,可通过页面元素判断登录状态page.wait_for_selector('.login - success - indicator')  cookies = page.context.cookies()# 保存登录状态到文件with open('xianyu_state.json', 'w') as f:json.dump(cookies, f)browser.close()return cookies
  1. 与其他模块交互:将获取的登录状态提供给spider_v2.py,使其能以登录态爬取数据;在 Web UI 方式中,与web_server.py的系统设置页面交互,接收用户通过扩展提取的登录状态并保存、使用。

(五)任务管理与配置相关(config.json.example .env.example等)

  1. 功能定位config.json.example用于配置多任务监控信息,如同时监控的关键词、各任务的价格范围等;.env.example用于配置项目运行的环境变量,涵盖 AI 接口、通知方式、Web 服务等各类参数,是项目个性化配置的核心载体,让工具能适配不同运行环境和用户需求。
  2. 关键逻辑
    • config.json.example以 JSON 格式组织任务配置,示例如下:
{"tasks": [{"keyword": "索尼A7M4","price_range": "10000 - 13000","filter_conditions": "95新以上,快门数低于5000","ai_prompt": "按照需求筛选商品"}]
}
  • .env.example以键值对形式定义环境变量,如:
OPENAI_API_KEY=your_api_key_here
OPENAI_BASE_URL=https://api.example.com
# 其他环境变量...
  • 项目启动时,会加载这些配置文件(实际运行需复制为config.json .env并填入真实值 ),spider_v2.py web_server.py等模块通过读取这些配置,确定监控任务、AI 接口、通知方式等参数,实现不同任务并行、个性化功能启用等。
  1. 与其他模块交互spider_v2.py读取config.json中的任务配置,执行对应的监控任务;web_server.py读取.env中的WEB_USERNAME WEB_PASSWORD等配置,实现 Web 界面认证和服务端口设置;AI 分析模块读取OPENAI_API_KEY等配置,连接对应的 AI 模型接口。

四、项目运行流程梳理

  1. 环境准备与配置:用户克隆项目后,安装requirements.txt中的 Python 依赖,复制.env.example.envconfig.json.exampleconfig.json并填入真实配置(如 AI 接口密钥、通知方式参数、Web 登录账号等 ),获取闲鱼登录状态(通过 Web UI 扩展或login.py脚本方式 )。
  2. 启动 Web 服务:运行web_server.py,启动 Web 管理界面,用户通过浏览器访问对应地址(如http://127.0.0.1:8000 ),使用配置的账号密码登录。
  3. 创建与管理任务:在 Web 界面的任务管理页面,用户以自然语言描述需求创建任务,prompt_generator.py生成提示词,spider_v2.py根据任务配置和登录状态,以 Playwright 模拟操作爬取商品数据。
  4. 数据处理与分析:爬虫获取商品数据后,立即进入 AI 分析流程,ai - analyze模块调用 AI 模型,结合提示词分析商品是否符合需求,生成分析结果。
  5. 结果展示与通知:AI 分析结果回传到 Web 界面展示,同时若商品符合需求,通过配置的通知方式(如 ntfy.sh、企业微信等 )推送给用户;任务运行日志等信息也实时在 Web 界面呈现,方便用户监控工具运行状态。
  6. 任务调度与持续运行:依据config.json或 Web 界面设置的定时规则(Cron 表达式 ),web_server.py调度spider_v2.py等模块,持续执行监控任务,实现对闲鱼商品的实时、智能监控。
http://www.dtcms.com/a/322588.html

相关文章:

  • Kubernetes 集群密钥与机密管理方案对比分析:Vault、Sealed Secrets 与 AWS KMS
  • dokcer 容器里面安装vim 编辑器
  • ruoyi关闭shiro校验,任何接口可以直接访问
  • 202506 电子学会青少年等级考试机器人五级器人理论真题
  • 【工具变量】地级市固定资产投资数据(2000-2023年)
  • 大模型在垂直场景的创新应用:搜索、推荐、营销与客服新玩法
  • LabVIEW用户事件交互
  • 【Datawhale AI夏令营】从Baseline到SOTA:深度剖析金融问答RAG管道优化之路
  • 鸿蒙示例代码使用心得
  • 华为实验: 单区域/多区域OSPF
  • n8n飞书webhook配置(飞书机器人、飞书bot、feishu bot)Crypto节点、js timestamp代码、Crypto node
  • 算法_python_学习记录_01
  • 可泛化双手操作机器人基准测试:CVPR 2025 MEIS 研讨会 RoboTwin 双臂协作挑战赛
  • day16 - CSS3新增属性
  • 【n8n教程笔记——工作流Workflow】文本课程(第二阶段)——5 自动化业务工作流——0 用例 (Use case)
  • FFMPEG将H264转HEVC时,码率缩小多少好,以及如何通过SSIM(Structural Similarity Index结构相似性指数)衡量转码损失
  • 大语言模型概述
  • day15 - CSS3新增属性
  • Java Callback 实现线程切换以及与Kotlin原理关系
  • MySQL(188)如何使用MySQL的慢查询工具?
  • 驾驶场景玩手机识别准确率↑32%:陌讯动态特征融合算法实战解析
  • 用生活日常的案例来介绍“程序运行时,对函数的调用一般有两种形式:传值调用和引用调用 和 这两种调用有什么区别?
  • 使用Navicat备份数据库MySQL、PostGreSQL等
  • SqlSugar vs EF Core 对比 2025年 .NET ORM
  • ES6中箭头函数的作用
  • C++-红黑树
  • 电子电气架构 --- 48伏电气系统架构
  • 串扰-信号完整性与电源完整性分析
  • C++安全异常设计
  • 浅尝AI辅助C转Verilog方法