DrissionPage 入门教程
三种页面对象概览
本教程共 42 篇 · 第 4 篇 · 更新于 2026-07-29 · 约 5 分钟阅读
DrissionPageDrissionPage 入门教程ChromiumPageSessionPageWebPage
4. 三种页面对象概览
本节目标:分清三种页面对象各自的用途,知道什么场景用哪个。学完能根据需求正确选择入口。
DrissionPage 提供了三种页面对象,覆盖网页自动化的所有场景。
它们分别是:ChromiumPage、SessionPage、WebPage。
ChromiumPage
能管理浏览器本身的标签页对象。
你可以把它当成程序入口。它内部封装了浏览器对象和第一个标签页。
大部分操作直接用它就行。
from DrissionPage import ChromiumPage
page = ChromiumPage() # 创建对象,自动启动浏览器
page.get('https://www.baidu.com') # 访问网页
特点:控制浏览器,不能切换到数据包收发模式。
适合场景:需要点击、输入、截图等浏览器交互操作。
NOTE:ChromiumPage 生成的标签页对象叫 ChromiumTab,和 WebPage 的 MixTab 不一样。ChromiumTab 不能切换模式。
SessionPage
只收发数据包的页面对象。
它把网络连接和结果解析封装成了页面。操作逻辑和浏览器页面一致。
from DrissionPage import SessionPage
page = SessionPage()
page.get('https://gitee.com/explore/all')
items = page.eles('t:h3')
for item in items[:-1]:
lnk = item('tag:a')
print(lnk.text, lnk.link)
特点:轻量、快速,不需要浏览器。
适合场景:纯数据采集,不需要页面交互,追求速度和并发。
和 requests 相比,代码量显著减少:
# requests 写法(需要配合 lxml)
import requests
from lxml import etree
response = requests.get(url, headers=headers)
html = etree.HTML(response.text)
element = html.xpath('//h1')[0]
# SessionPage 写法(自带解析)
from DrissionPage import SessionPage
page = SessionPage()
page.get(url)
element = page('tag:h1')
WebPage
二合一,既能控制浏览器,也能收发数据包。
这是最灵活的选择。它生成的标签页对象叫 MixTab,可以在两种模式间切换。
from DrissionPage import WebPage
page = WebPage() # 默认 d 模式(浏览器控制)
page.get('https://www.baidu.com')
page.to_tab().click('.btn') # 点击按钮
page.change_mode('s') # 切换到 s 模式(数据包收发)
page.get('https://api.example.com/data')
特点:灵活切换模式,一个对象搞定两种需求。
适合场景:同一个任务里既要浏览器交互又要高效请求。
怎么选?
| 对象 | 浏览器 | 数据包 | 速度 | 选择建议 |
|---|---|---|---|---|
| ChromiumPage | 能 | 不能 | 一般 | 纯浏览器操作 |
| SessionPage | 不能 | 能 | 最快 | 纯数据收发 |
| WebPage | 能 | 能 | 一般 | 混合场景 |
简单的判断逻辑:
- 需要点击、输入、截图?用 ChromiumPage
- 只需要抓数据,追求速度?用 SessionPage
- 两种都要?用 WebPage
TIP:新手建议从 ChromiumPage 开始。看得见浏览器操作,学习反馈更直观。熟练后再根据需要切换到其他对象。