DrissionPage Dev
工作边界
- 处理两类任务:
- 在任意项目里编写或调试 DrissionPage 脚本。
- 在 DrissionPage 上游仓库里维护源码、CLI、类型声明或文档。
- 默认按“普通项目脚本”处理,除非当前工作区明显就是上游仓库,或用户明确要求维护仓库本身。
默认入口
- 先读
references/docs-map.md,按任务类型跳到最合适的文档,不要盲目遍历目录。 - 文档参考顺序固定为:
实战示例→入门指南→ 相关栏目文档。 - 选中文档后,只打开解决当前问题所需的那几个文件,不要整段扫读
references/docs/目录。 - 需要浏览器调试或网站分析时,优先使用
chrome-devtools-mcp;只有 MCP 不可用时,才回退到 DrissionPage 的cdp()/run_cdp()能力。
源码约束
- 默认禁止主动阅读 DrissionPage 包源码、上游仓库源码和
.pyi类型声明,也不要把.pyi当作文档入口。 - 只有在以下条件同时满足时,才允许例外核对源码或
.pyi:- 已按优先级查过
实战示例、入门指南、相关栏目文档; - 仍然无法确认关键 API 行为,或者文档与实际行为明显冲突;
- 已优先尝试通过
chrome-devtools-mcp、最小复现、运行验证来确认问题。
- 已按优先级查过
- 发生上述例外时,只读取解决当前阻塞所必需的最小范围,并在对用户的说明中明确指出“这是例外核对,不是默认流程”。
- 若只是为了补充信心、确认签名、查看类型或“保险起见”,不构成阅读源码或
.pyi的正当理由。
任务流程
普通项目脚本
- 复述目标站点、预期结果和输入输出约束。
- 看
references/docs-map.md,选最近的示例和栏目文档。 - 用 MCP 或最小脚本确认页面流程、关键 selector、请求名和等待点。
- 再用 DrissionPage 落地最小可行实现。
- 做针对性 smoke test。
上游仓库维护
- 先看
references/docs-map.md和references/architecture.md。 - 先用 skill 内文档理解公开行为,再决定是否需要例外核对源码。
- 若改动公开 API、CLI、配置生成或类型声明,检查文档副本是否要同步更新。
- 做最小验证,不要默认跑重型全量构建。
代码风格
- 优先参考
references/docs/实战示例/,尽量保持与示例一致的写法和注释风格。 - 直接类导入,不使用
import DrissionPage后再取类。 - 先创建页面对象,再调用
get()导航。 - 优先使用 DrissionPage 自身定位语法,不默认退回 CSS selector 或 XPath。
- 注释、日志和文档字符串优先跟随周围文件的既有语言风格;若是新建的中文脚本或示例,可默认使用中文。
- 沿用示例中的命名习惯:
page、tab、ele、btn、img、item、items、recorder。 - 简单操作可链式调用;需要复用元素时先赋值。
- 默认先找“动作之后该等什么”;优先等待加载、目标元素或目标请求,不要反复盲等。
对象选型
| 场景 | 正确对象 | 示例参考 |
|---|---|---|
| 纯浏览器控制(登录、截图、缓存图片) | ChromiumPage |
实战示例/🌠 Gitee 自动登录.md, 实战示例/🌠 豆瓣图书封面下载.md, 实战示例/🌠 猫眼电影TOP100采集.md |
| 纯请求/解析(无需浏览器) | SessionPage |
实战示例/🌠 星巴克图片下载.md, 入门指南/🗺️ 收发数据包.md |
| 需要浏览器 + 请求双模式切换 | WebPage |
入门指南/🗺️ 模式切换.md |
| 多标签页操作 | ChromiumPage + get_tab() |
实战示例/🌠 多线程多标签页采集.md |
下载与保存
- 浏览器缓存图片优先用
img.save(...)。 - URL 资源下载优先用
page.download(...)。
协作补充
- 与周围文件保持同一种注释和日志语言,避免在现有英文项目里混入中文差异;新建中文示例时再优先用中文。
- 需要浏览器调试或网站分析时,默认按“三段式协作”:MCP 先诊断 → DrissionPage 最小复现 → DrissionPage 落地修复并回归。
- 协作交接时至少包含:目标 URL、最小复现步骤、关键定位信息(selector / 请求名)、期望与实际差异、错误文本。
验证方式
- 普通项目脚本优先做针对性 smoke test,不要默认假设存在完整 CI,也不要默认跑打包命令。
- 如果当前工作区就是 DrissionPage 上游仓库,再考虑以下仓库级验证命令:
python -m pip install -e .
python -m build
python -c "from DrissionPage import ChromiumPage, SessionPage, WebPage; print(WebPage)"
dp --configs-to-here
- 涉及浏览器行为时,补一个最小可复现场景,明确浏览器路径、端口、配置文件或本地环境前提。
- 如果例外核对源码后发现文档与行为不一致,优先把差异补到 skill 内文档;如果当前任务就是维护上游仓库,再决定是否同步回仓库文档。