首页 / DrissionPage 入门教程 / 访问网页

DrissionPage 入门教程

访问网页

本教程共 42 篇 · 第 10 篇 · 更新于 2026-07-29 · 约 6 分钟阅读

DrissionPageDrissionPage 入门教程get方法post方法加载模式

10. 访问网页

本节目标:掌握 get() 和 post() 方法的使用,理解加载模式的作用,能配置超时和重试。

访问网页是最基本的操作。

DrissionPage 提供了 get()post() 两种方式。

get() 方法

跳转到指定网址:

from DrissionPage import Chromium

tab = Chromium().latest_tab
tab.get('https://www.baidu.com')

也可以访问本地文件:

tab.get(r'C:\Users\test\page.html')

超时和重试

网络不稳定时可以配置:

tab.get(
    'https://www.baidu.com',
    retry=3,       # 重试次数
    interval=2,    # 重试间隔(秒)
    timeout=10     # 加载超时(秒)
)

不指定 retry 和 interval 时,使用页面对象的默认设置。

错误处理

默认连接失败不抛异常,返回 False

success = tab.get('https://www.baidu.com')
if not success:
    print('访问失败')

想看到错误信息:

tab.get('https://www.baidu.com', show_errmsg=True)

post() 方法

s 模式下用 POST 方式发送请求:

from DrissionPage import SessionPage

page = SessionPage()
response = page.post(
    'https://api.example.com/login',
    data={'user': 'test', 'pwd': '123'}
)
print(response.json())

参数和 requests 库基本一致:

page.post(
    url,
    data={'key': 'value'},          # 表单数据
    json={'key': 'value'},          # JSON 数据
    headers={'User-Agent': '...'},  # 请求头
    cookies={'token': 'xxx'},       # cookies
    proxies={'http': 'http://...'}  # 代理
)

加载模式

加载模式决定 get() 后等待什么。

normal 模式(默认)

等待所有资源加载完毕:

tab.set.load_mode.normal()
tab.get('https://www.baidu.com')

适合需要完整页面内容的场景。

eager 模式

DOM 加载完就停止,不等图片、CSS 等资源:

tab.set.load_mode.eager()
tab.get('https://www.baidu.com')

速度更快,适合只需要 DOM 结构的场景。

none 模式

发请求后不阻塞,不自动停止加载:

tab.set.load_mode.none()
tab.get('https://www.baidu.com')
# 可以手动停止
tab.stop_loading()

自由度最高。可以等关键数据出现就停止,大幅提升效率。

等待加载

除了加载模式,还可以用 wait 对象精确控制:

# 等待页面开始加载
tab.wait.load_start()

# 等待页面加载完成
tab.wait.load_complete()

# 等待特定元素出现
tab.ele('#result', timeout=10)

实际应用

from DrissionPage import Chromium

tab = Chromium().latest_tab

# 设置加载模式
tab.set.load_mode.eager()

# 访问网页
tab.get('https://www.baidu.com')

# 等待搜索结果出现
tab.ele('#content_left', timeout=10)

# 获取结果
results = tab.eles('tag:h3')
for r in results:
    print(r.text)

TIP:开发阶段用 normal 模式,确保页面完整加载。性能敏感的场合切换到 eager 或 none 模式。