Skip to main content
Glama

DrissionPage MCP Browser Automation

by griifth

DrissionPage MCP 浏览器自动化服务

基于 DrissionPage 的 MCP (Model Context Protocol) 服务器,为 AI 模型提供强大的浏览器自动化和数据抓取功能。

特性

  • 🌐 浏览器自动化:完整的浏览器控制能力(导航、点击、输入等)

  • 📄 网页转 Markdown:智能将网页内容转换为 Markdown 格式

  • 📊 数据抓取:结构化提取网页数据(表格、列表等)

  • 🔧 混合粒度:提供基础操作和高级封装两种工具集

  • 🎯 单例模式:高效管理单个浏览器实例

  • 👀 可视化调试:默认有头模式,方便观察操作过程

安装

  1. 克隆或下载本项目

  2. 安装依赖:

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: 导航到 URL

  • find_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 解析

开发指南

添加新工具

  1. 在相应的工具文件(basic.pyadvanced.py 等)中定义函数

  2. tools/__init__.py 中导出

  3. server.py 中注册到 MCP 服务器

错误处理

所有工具函数都应返回统一的格式:

{ "success": True/False, "data": {...}, # 成功时的数据 "error": "...", # 失败时的错误信息 }

使用注意

  1. 浏览器单例:同一时间只能有一个浏览器实例,适合顺序执行任务

  2. 资源释放:使用完毕后请调用 close_browser() 释放资源

  3. 超时控制:所有操作都有超时参数,避免无限等待

  4. 调试模式:默认有头模式便于调试,生产环境可配置为无头模式

  5. 网络延迟:根据网络情况调整 timeout 参数

  6. 选择器优化:优先使用 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=trueremove_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" )

性能优化建议

  1. 减少等待时间:合理设置 timeoutwait_after 参数

  2. 批量操作:使用 smart_extract 一次性提取多个元素

  3. 缓存页面:避免重复访问同一页面

  4. 并发处理:对于独立任务,可启动多个 MCP 服务器实例

文档资源

  • 详细使用指南:查看 USAGE_GUIDE.md

  • 测试示例:查看 test_example.py

  • DrissionPage 文档:https://DrissionPage.cn

  • MCP 协议规范:https://modelcontextprotocol.io/

许可证

本项目遵循 MIT 许可证。

致谢

-
security - not tested
F
license - not found
-
quality - not tested

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/griifth/drissionpage-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server