DrissionPage MCP Browser Automation
Provides browser automation and web scraping capabilities including page navigation, form filling, data extraction, and intelligent conversion of web pages to Markdown format.
README
DrissionPage MCP 浏览器自动化服务
基于 DrissionPage 的 MCP (Model Context Protocol) 服务器,为 AI 模型提供强大的浏览器自动化和数据抓取功能。
特性
- 🌐 浏览器自动化:完整的浏览器控制能力(导航、点击、输入等)
- 📄 网页转 Markdown:智能将网页内容转换为 Markdown 格式
- 📊 数据抓取:结构化提取网页数据(表格、列表等)
- 🔧 混合粒度:提供基础操作和高级封装两种工具集
- 🎯 单例模式:高效管理单个浏览器实例
- 👀 可视化调试:默认有头模式,方便观察操作过程
安装
-
克隆或下载本项目
-
安装依赖:
cd drissionpage_mcp
pip install -r requirements.txt
快速开始
方式 1:直接运行测试
# 运行测试示例,验证功能
python test_example.py
方式 2:启动 MCP 服务器
python server.py
服务器将通过标准输入/输出与 MCP 客户端通信。
方式 3:配置 MCP 客户端
如果您使用支持 MCP 的 AI 工具(如 Claude Desktop、Cursor 等),可以在配置文件中添加:
Claude Desktop 配置示例 (~/Library/Application Support/Claude/claude_desktop_config.json):
{
"mcpServers": {
"drissionpage": {
"command": "python",
"args": ["/Users/Desktop/drissionpage_mcp/server.py"]
}
}
}
配置后重启客户端,AI 模型即可调用浏览器自动化功能。
使用示例
示例 1:访问网页并保存为 Markdown
# AI 模型可以通过 MCP 调用以下工具链:
1. init_browser() # 启动浏览器
2. navigate(url="https://news.ycombinator.com") # 访问网页
3. page_to_markdown(file_path="hn_news.md") # 保存为 Markdown
4. close_browser() # 关闭浏览器
示例 2:自动填写表单
1. init_browser()
2. navigate(url="https://example.com/login")
3. input_text(selector="#username", text="user")
4. input_text(selector="#password", text="pass")
5. click_element(selector="button[type='submit']")
6. wait_for_element(selector=".dashboard", timeout=10)
7. page_to_markdown(file_path="dashboard.md")
示例 3:数据抓取
1. init_browser()
2. navigate(url="https://example.com/data")
3. extract_table_data(selector="table.data-table", format="json")
4. close_browser()
工具列表
浏览器管理
init_browser: 初始化浏览器实例get_browser_status: 获取浏览器状态close_browser: 关闭浏览器
基础操作
navigate: 导航到 URLfind_elements: 查找页面元素click_element: 点击元素input_text: 输入文本get_element_text: 获取元素文本get_element_attribute: 获取元素属性wait_for_element: 等待元素出现scroll_page: 滚动页面take_screenshot: 截图execute_javascript: 执行 JS 代码
高级功能
page_to_markdown: 网页转 Markdown(核心功能)extract_table_data: 提取表格数据smart_extract: 智能数据抓取fill_form: 自动填写表单handle_infinite_scroll: 处理无限滚动manage_cookies: Cookie 管理switch_to_tab: Tab 页切换
技术架构
drissionpage_mcp/
├── __init__.py # 包初始化
├── server.py # MCP 服务器主入口
├── browser.py # 浏览器单例管理器
├── tools/ # 工具集
│ ├── __init__.py
│ ├── basic.py # 基础操作工具
│ ├── advanced.py # 高级功能工具
│ └── markdown.py # Markdown 转换工具
├── requirements.txt # 依赖列表
└── README.md # 本文档
依赖项
- DrissionPage: 浏览器自动化核心库
- mcp: Model Context Protocol 实现
- markdownify / html2text: HTML 转 Markdown
- beautifulsoup4: HTML 解析
- lxml: 高性能 XML/HTML 解析
开发指南
添加新工具
- 在相应的工具文件(
basic.py、advanced.py等)中定义函数 - 在
tools/__init__.py中导出 - 在
server.py中注册到 MCP 服务器
错误处理
所有工具函数都应返回统一的格式:
{
"success": True/False,
"data": {...}, # 成功时的数据
"error": "...", # 失败时的错误信息
}
使用注意
- 浏览器单例:同一时间只能有一个浏览器实例,适合顺序执行任务
- 资源释放:使用完毕后请调用
close_browser()释放资源 - 超时控制:所有操作都有超时参数,避免无限等待
- 调试模式:默认有头模式便于调试,生产环境可配置为无头模式
- 网络延迟:根据网络情况调整
timeout参数 - 选择器优化:优先使用 CSS 选择器,性能更好
常见问题
Q: 如何切换为无头模式?
A: 调用 init_browser(headless=true) 即可。
Q: 支持哪些浏览器?
A: 支持 Chromium 内核浏览器(Chrome、Edge 等)。
Q: 如何处理需要登录的网站?
A: 使用 fill_form 工具自动填写表单,或使用 manage_cookies 设置已保存的 Cookie。
Q: 可以同时打开多个标签页吗?
A: 可以,使用 switch_to_tab(action="new") 创建新标签页。
Q: Markdown 转换质量如何提升?
A: 启用 extract_main=true 和 remove_ads=true 选项,只保留主要内容。
高级用法
自定义浏览器配置
init_browser(
headless=False,
window_size=[1920, 1080],
user_agent="Custom User Agent",
proxy="http://proxy.example.com:8080"
)
批量数据抓取
# 1. 访问列表页
navigate(url="https://example.com/articles")
# 2. 处理懒加载
handle_infinite_scroll(max_scrolls=10, check_selector=".article")
# 3. 提取所有文章
smart_extract(
selector=".article",
fields={
"title": "h2.title",
"summary": "p.summary",
"link": "a.read-more"
}
)
复杂表单自动化
fill_form(
fields={
"#email": "user@example.com",
"#password": "secure_password",
"#country": "China", # 下拉框
"#agree": True, # 复选框
"#newsletter": False
},
submit_selector="button.submit"
)
性能优化建议
- 减少等待时间:合理设置
timeout和wait_after参数 - 批量操作:使用
smart_extract一次性提取多个元素 - 缓存页面:避免重复访问同一页面
- 并发处理:对于独立任务,可启动多个 MCP 服务器实例
文档资源
- 详细使用指南:查看
USAGE_GUIDE.md - 测试示例:查看
test_example.py - DrissionPage 文档:https://DrissionPage.cn
- MCP 协议规范:https://modelcontextprotocol.io/
许可证
本项目遵循 MIT 许可证。
致谢
- DrissionPage - 强大的 Python 网页自动化工具
- Model Context Protocol - AI 模型工具调用标准
推荐服务器
Baidu Map
百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。
Playwright MCP Server
一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。
Magic Component Platform (MCP)
一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。
Audiense Insights MCP Server
通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。
VeyraX
一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。
graphlit-mcp-server
模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。
Kagi MCP Server
一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。
e2b-mcp-server
使用 MCP 通过 e2b 运行代码。
Neon MCP Server
用于与 Neon 管理 API 和数据库交互的 MCP 服务器
Exa MCP Server
模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。