使用说明
MCP Web自动化测试技术全栈IA
使用模型上下文协议(MCP)和人工智能进行自适应抓取的完整智能web自动化解决方案。
📋 目录
🎯 概述
该项目实现了一个完整的web自动化解决方案,分为两部分:
- MCP服务器 :Exposer 6输出自动化网络(导航、截图、提取链接、填充、点击、获取html)
- 智能代理 :LLM代理,能够根据JSON模式从任何网页提取结构化数据
使用的技术
- 后端 :Python 3.11+
- 自动化 :剧作家
- LLM :OpenAI GPT-4o
- 验证 :Pydantic
- 协议 :MCP(模型上下文协议)
📦 第1部分:MCP服务器
展示的工具
MCP服务器公开了6种web自动化工具:
| 输出 | 描述 |
|---|---|
navigate |
导航到URL |
screenshot |
捕获屏幕(视口或完整页面) |
extract_links |
从页面提取所有链接 |
fill |
填写表单字段 |
click |
点击一个项目 |
get_html |
获取完整的后JavaScript HTML |
统一响应格式
{
"ok": true,
"tool": "navigate",
"session_id": "sess_abc123",
"data": {"current_url": "https://example.com", "status": 200},
"meta": {"ts": "2025-10-30T...", "duration_ms": 342}
}
演示第1部分
python demo/scenario_part1.py
剧本 :
- 纳维盖尔·弗斯https://example.com
- 截图
- 提取所有链接
- 导航到第一个外部链接
- 再次捕获屏幕
🤖 第2部分:智能抓取代理
功能
代理使用LLM(GPT-4O)来:
- ✅ 自动分析HTML结构
- ✅ 确定最佳CSS选择器
- ✅ 根据JSON模式提取数据
- ✅ 自动管理分页
- ✅ 转换器类型(字符串→ 数字,布尔值)
- ✅ 生成质量报告
配置示例
{
"url": "https://books.toscrape.com/",
"schema": {
"products": [
{
"title": "string",
"price": "number",
"availability": "string",
"rating": "string"
}
],
"metadata": {
"date_extraction": "datetime",
"nb_resultats": "number"
}
},
"options": {
"pagination": true,
"max_pages": 3
}
}
演示第2部分
python demo/scenario_part2.py
结果 :具有提取数据+质量报告的结构化JSON文件
🚀 安装
先决条件
- Python 3.10+
- 点
步骤
# 1. Cloner le repository
git clone https://github.com/votre-username/MCP_Web_Automation.git
cd MCP_Web_Automation
# 2. Créer un environnement virtuel (recommandé)
python -m venv venv
source venv/bin/activate # Linux/Mac
# ou
venv\Scripts\activate # Windows
# 3. Installer les dépendances
pip install -r requirements.txt
# 4. Installer le navigateur Playwright
playwright install chromium
# 5. Configurer l'API OpenAI (pour Partie 2)
cp .env.example .env
# Éditer .env et ajouter votre OPENAI_API_KEY
.env文件
OPENAI_API_KEY=sk-...
💻 使用
MCP服务器(第1部分)
from src.mcp_server import MCPServer
server = MCPServer()
server.run()
刮除剂(第二方)
API Python
from src.scraping_agent import ScrapingAgent, ScrapingConfig
from src.mcp_server import ToolService
agent = ScrapingAgent(
openai_api_key="sk-...",
tool_service=ToolService()
)
config = ScrapingConfig(
url="https://example.com/products",
schema={
"products": [{"name": "string", "price": "number"}]
},
options={"pagination": True, "max_pages": 5}
)
result = agent.scrape(config)
print(result.data)
命令行界面
python src/scraping_cli.py \
--config config.json \
--output results.json
🏗️ 建筑
全球架构
┌─────────────────────────────────────┐
│ Agent de Scraping Intelligent │
│ (LLM + Orchestration) │
└─────────────┬───────────────────────┘
│ Appels directs Python
↓
┌─────────────────────────────────────┐
│ ToolService (MCP) │
│ (navigate, click, get_html, etc.) │
└─────────────┬───────────────────────┘
│
↓
┌─────────────────────────────────────┐
│ Playwright │
│ (Chromium automation) │
└─────────────────────────────────────┘
为什么不完全MCP(STDIO/SSE)?
对于在同一项目中使用Python工具的Python代理,方法 直接呼叫 最佳:
- ✅ 开发的简单性
- ✅ 性能(开销I/O)
- ✅ 简化状态管理
- ✅ 如果需要,易于迁移到完整的MCP
看 决策_ PART2.md 有关建筑细节。
📚 文档
技术决策文件
- DECISIONS.md 决策第1部分(MCP服务器)
- 决策_ PART2.md 决策第2部分(智能代理)
项目结构
MCP_Web_Automation/
├── src/
│ ├── mcp_server.py # Serveur MCP principal
│ ├── scraping_agent.py # Agent intelligent de scraping
│ ├── scraping_cli.py # Interface CLI pour l'agent
│ ├── browser.py # Gestionnaire de navigateur
│ ├── errors.py # Gestion d'erreurs
│ ├── logging_conf.py # Configuration logging
│ └── tools/ # Outils MCP
│ ├── navigate.py
│ ├── screenshot.py
│ ├── extract_links.py
│ ├── fill.py
│ ├── click.py
│ └── get_html.py
├── demo/
│ ├── scenario_part1.py # Démo Partie 1
│ └── scenario_part2.py # Démo Partie 2
├── DECISIONS.md # Décisions techniques Partie 1
├── DECISIONS_PART2.md # Décisions techniques Partie 2
├── requirements.txt # Dépendances Python
├── pyproject.toml # Configuration projet
└── README.md # Ce fichier
🔧 发展
执行测试
# Partie 1
python demo/scenario_part1.py
# Partie 2
python demo/scenario_part2.py
日志记录
JSON日志写在stderr上:
{"level":"INFO","message":"tool_success","tool":"navigate","duration_ms":342}
🚧 已知限制
- LLM背景 :HTML截断为50KB
- API成本 每页=1个LLM呼叫
- 潜伏期 每页2-5秒(与传统刮刀相比)
- 分页滚动infini :不支持
- 反bot :像亚马逊这样的网站可以阻止
看 决策_ PART2.md 有关详细信息,请参阅“限制”部分。
🔮 未来发展
- []类似页面的缓存LLM
- []支持多LLM(克劳德、米斯特拉尔等)
- []工具
scroll倒分页infinie - []隐形模式(用户代理、代理)
- []自动身份验证流
- []速率限制和尊重robots.txt
- []监控普罗米修斯/Grafana
📄 许可证
该项目是在招聘过程中进行的技术测试。
👤 电影导演
罗宾 -全栈IA技术测试-2025年10月