当前位置: 首页 > news >正文

【爬虫】DrissionPage-6

官方文档:
https://www.drissionpage.cn/browser_control/visit
https://www.drissionpage.cn/browser_control/page_operation

1. Tab 对象概述

Tab 对象DrissionPage 中用于控制浏览器标签页的主要单位。每个 Tab 对象对应一个浏览器标签页,负责执行各种网页操作,如页面跳转、元素管理、执行脚本等。


2. 页面跳转

Tab 对象提供了多种方法来控制页面的跳转和导航。

📌 get()

get() 方法用于跳转到指定的网址,支持访问本地文件路径,并内置了重试机制以应对连接失败的情况。

参数说明

参数名称类型默认值说明
urlstr必填目标 URL,可以是网页地址或本地文件路径。
show_errmsgboolFalse连接出错时是否显示和抛出异常。
retryintNone重试次数。如果为 None,则使用页面参数,默认值为 3
intervalfloatNone重试间隔(秒)。如果为 None,则使用页面参数,默认值为 2
timeoutfloatNone加载超时时间(秒)。如果未指定,则使用 ChromiumPagetimeouts 属性中的 page_load 值。
paramsdictNoneURL 请求参数(仅在 s 模式下有效)。
datadict / strNone携带的数据。
jsondict / strNone要发送的 JSON 数据,会自动设置 Content-Typeapplication/json
headersdictNone请求头。
cookiesdict / CookieJarNoneCookies 信息。
filesAnyNone要上传的文件,可以是字典,键为文件名,值为文件对象或文件路径。
authAnyNone身份认证信息。
allow_redirectsboolTrue是否允许重定向。
proxiesdictNone代理信息。
hooksAnyNone回调方法。
streamboolNone是否使用流式传输。
verifybool / strNone是否验证 SSL 证书。
certstr / Tuple[str, str]NoneSSL 客户端证书文件的路径(.pem 格式),或 ('cert', 'key') 元组。

返回类型bool
说明:返回访问是否成功。

示例

from DrissionPage import Chromiumtab = Chromium().latest_tab
success = tab.get('https://www.example.com')
print(success)  # 输出: True 或 False
📌 back()

back() 方法用于在浏览历史中后退若干步。

参数

参数名称类型默认值说明
stepsint1后退步数。

返回类型:None

示例

tab.back(2)  # 后退两个网页
📌 forward()

forward() 方法用于在浏览历史中前进若干步。

参数

参数名称类型默认值说明
stepsint1前进步数。

返回类型:None

示例

tab.forward(2)  # 前进两步
📌 refresh()

refresh() 方法用于刷新当前页面。

参数

参数名称类型默认值说明
ignore_cacheboolFalse刷新时是否忽略缓存。

返回类型:None

示例

tab.refresh()  # 刷新页面
📌 stop_loading()

stop_loading() 方法用于强制停止当前页面加载。

参数:无

返回类型:None

📌 set.blocked_urls()

set.blocked_urls() 方法用于设置忽略的连接。

参数

参数名称类型默认值说明
urlsstr / list / tuple / None必填要忽略的 URL,可以传入多个,可用 * 通配符,传入 None 时清空已设置的项。

返回类型:None

示例

tab.set.blocked_urls('*.css*')  # 设置不加载 CSS 文件

3. 元素管理
📌 add_ele()

add_ele() 方法用于创建一个新元素,并可选择是否将其插入到 DOM 中。

参数

参数名称类型默认值说明
html_or_infostr / Tuple[str, dict]必填新元素的 HTML 文本或信息。如果为 tuple,则可以新建不添加到 DOM 的元素。
insert_tostr / ChromiumElement / Tuple[str, str]None插入到哪个元素中,可以接收元素对象和定位符。如果为 None,且 html_or_infostr,则添加到 body,否则不添加到 DOM。
beforestr / ChromiumElement / Tuple[str, str]None在哪个子节点前面插入,可以接收对象和定位符,为 None 时插入到父元素末尾。

返回类型ChromiumElement
说明:新建的元素对象。

示例

from DrissionPage import Chromiumtab = Chromium().latest_tab
tab.get('https://www.baidu.com')
html = '<a href="http://DrissionPage.cn" target="blank">DrissionPage </a> '
ele = tab.add_ele(html, '#s-top-left', '新闻')  # 插入到导航栏
ele.click()

添加一个不可见的元素

from DrissionPage import Chromiumtab = Chromium().latest_tab
info = ('a', {'innerText': 'DrissionPage', 'href': 'http://DrissionPage.cn', 'target': 'blank'})
ele = tab.add_ele(info)
ele.click('js')  # 需用 JS 点击
📌 remove_ele()

remove_ele() 方法用于从页面上删除一个元素。

参数

参数名称类型默认值说明
loc_or_elestr / Tuple[str, str] / ChromiumElement必填要删除的元素,可以是元素或定位符。

返回类型:None

示例

# 删除一个已获得的元素
ele = tab('tag:a')
tab.remove_ele(ele)# 删除用定位符找到的元素
tab.remove_ele('tag:a')

4. 执行脚本或命令
📌 run_js()

run_js() 方法用于执行 JavaScript 脚本。

参数

参数名称类型默认值说明
scriptstr必填JavaScript 脚本文本或脚本文件路径。
*args-传入的参数,按顺序在 JS 文本中对应 arguments[0]arguments[1]
as_exprboolFalse是否作为表达式运行,为 Trueargs 参数无效。
timetoutfloatNoneJS 超时时间(秒),为 None 则使用页面 timeouts.script 设置。

返回类型Any
说明:脚本执行结果。

示例

# 用传入参数的方式执行 JS 脚本,显示弹出框显示 Hello world!
tab.run_js('alert(arguments[0]+arguments[1]);', 'Hello', ' world!')

注意

  • 如果 as_exprTrue,脚本应是返回一个结果的形式,并且不能有 return
  • 如果 as_expr 不为 True,脚本应尽量写成一个方法。
📌 run_js_loaded()

run_js_loaded() 方法用于运行 JavaScript 脚本,执行前等待页面加载完毕。

参数:与 run_js() 方法相同。

返回类型Any
说明:脚本执行结果。

📌 run_async_js()

run_async_js() 方法用于以异步方式执行 JavaScript 代码。

参数

参数名称类型默认值说明
scriptstr必填JavaScript 脚本文本。
*args-传入的参数,按顺序在 JS 文本中对应 arguments[0]arguments[1]
as_exprboolFalse是否作为表达式运行,为 Trueargs 参数无效。

返回类型:None

📌 run_cdp()

run_cdp() 方法用于执行 Chrome DevTools Protocol 语句。

参数

参数名称类型默认值说明
cmdstr必填协议项目。
**cmd_args-项目参数。

返回类型dict
说明:执行返回的结果。

示例

# 停止页面加载
tab.run_cdp('Page.stopLoading')
📌 run_cdp_loaded()

run_cdp_loaded() 方法用于执行 Chrome DevTools Protocol 语句,执行前先确保页面加载完毕。

参数:与 run_cdp() 方法相同。

返回类型dict
说明:执行返回的结果。


5. Cookies 及缓存
📌 set.cookies()

set.cookies() 方法用于设置 Cookie,可以设置一个或多个。

参数

参数名称类型默认值说明
cookiesCookie / CookieJar / list / tuple / str / dict必填Cookies 信息。

返回类型:None

示例

# 可以接受多种类型的参数
cookies1 = ['name1=value1', 'name2=value2']
cookies2 = 'name1=value1; name2=value2; path=/; domain=.example.com;'
cookies3 = {'name1': 'value1', 'name2': 'value2', 'domain': '.example.com'}
tab.set.cookies(cookies1)
📌 set.cookies.clear()

set.cookies.clear() 方法用于清除所有 Cookie。

参数:无

返回类型:None

📌 set.cookies.remove()

set.cookies.remove() 方法用于删除一个 Cookie。

参数

参数名称类型默认值说明
namestr必填Cookie 的 name 字段。
urlstrNoneCookie 的 url 字段。
domainstrNoneCookie 的 domain 字段。
pathstrNoneCookie 的 path 字段。

返回类型:None

📌 set.session_storage()

set.session_storage() 方法用于设置或删除某项 sessionStorage 信息。

参数

参数名称类型默认值说明
itemstr必填要设置的项。
valuestr / False必填False 时,删除该项。

返回类型:None

示例

tab.set.session_storage(item='abc', value='123')
📌 set.local_storage()

set.local_storage() 方法用于设置或删除某项 localStorage 信息。

参数

参数名称类型默认值说明
itemstr必填要设置的项。
valuestr / False必填False 时,删除该项。

返回类型:None

📌 clear_cache()

clear_cache() 方法用于清除缓存,可选择要清除的项。

参数

参数名称类型默认值说明
session_storageboolTrue是否清除 sessionStorage
local_storageboolTrue是否清除 localStorage
cacheboolTrue是否清除 cache
cookiesboolTrue是否清除 cookies

返回类型:None

示例

tab.clear_cache(cookies=False)  # 除了 cookies,其它都清除

6. 运行参数设置
📌 set.retry_times()

set.retry_times() 方法用于设置连接失败时重连次数。

参数

参数名称类型默认值说明
timesint必填次数。

返回类型:None

📌 set.retry_interval()

set.retry_interval() 方法用于设置连接失败时重连间隔。

参数

参数名称类型默认值说明
intervalfloat必填秒数。

返回类型:None

📌 set.timeouts()

set.timeouts() 方法用于设置三种超时时间,单位为秒。可单独设置,为 None 表示不改变原来设置。

参数

参数名称类型默认值说明
basefloatNone整体超时时间。
page_loadfloatNone页面加载超时时间。
scriptfloatNone脚本运行超时时间。

返回类型:None

示例

tab.set.timeouts(base=10, page_load=30)
📌 set.load_mode

set.load_mode 属性用于设置页面加载策略,调用其方法选择某种策略。

方法

方法名称参数说明
normal()等待页面完全加载完成,为默认状态。
eager()等待文档加载完成就结束,不等待资源加载。
none()页面连接完成就结束。

示例

tab.set.load_mode.normal()
tab.set.load_mode.eager()
tab.set.load_mode.none()
📌 set.user_agent()

set.user_agent() 方法用于为浏览器当前标签页设置 user agent

参数

参数名称类型默认值说明
uastr必填user agent 字符串。
platformstrNone平台类型,如 'android'

返回类型:None

📌 set.headers()

set.headers() 方法用于设置额外添加到当前页面请求 headers 的参数。

参数

参数名称类型默认值说明
headersdict / str必填headers 信息。

返回类型:None

示例

# dict 格式
h = {'connection': 'keep-alive', 'accept-charset': 'GB2312,utf-8;q=0.7,*;q=0.7'}
tab.set.headers(headers=h)# 文本格式
h = '''connection: keep-alive
accept-charset: GB2312,utf-8;q=0.7,*;q=0.7'''
tab.set.headers(headers=h)

7. 窗口管理
📌 set.window.max()

set.window.max() 方法用于使窗口最大化。

参数:无

返回类型:None

示例

tab.set.window.max()
📌 set.window.mini()

set.window.mini() 方法用于使窗口最小化。

参数:无

返回类型:None

📌 set.window.full()

set.window.full() 方法用于使窗口切换到全屏模式。

参数:无

返回类型:None

📌 set.window.normal()

set.window.normal() 方法用于使窗口切换到普通模式。

参数:无

返回类型:None

📌 set.window.size()

set.window.size() 方法用于设置窗口大小。只传入一个参数时,另一个参数不会变化。

参数

参数名称类型默认值说明
widthintNone窗口宽度。
heightintNone窗口高度。

返回类型:None

示例

tab.set.window.size(500, 500)
📌 set.window.location()

set.window.location() 方法用于设置窗口位置。只传入一个参数时,另一个参数不会变化。

参数

参数名称类型默认值说明
xintNone距离顶部距离。
yintNone距离左边距离。

返回类型:None

示例

tab.set.window.location(500, 500)
📌 set.window.hide()

set.window.hide() 方法用于隐藏浏览器窗口。

注意

  • 这个方法直接隐藏浏览器进程,在任务栏上也会消失。仅支持 Windows 系统,并且必须已安装 pypiwin32 库才可使用。
  • 窗口隐藏后,如果有新窗口出现,整个浏览器又会显现出来。

参数:无

返回类型:None

示例

tab.set.window.hide()

注意

  • 浏览器隐藏后并没有关闭,下次运行程序还会接管已隐藏的浏览器。
  • 浏览器隐藏后,如果有新建标签页,会自行显示出来。
📌 set.window.show()

set.window.show() 方法用于显示当前浏览器窗口。

参数:无

返回类型:None


8. 页面滚动
📌 scroll() / scroll.down()

scroll()scroll.down() 方法用于使页面向下滚动若干像素,水平位置不变。

参数

参数名称类型默认值说明
pixelint必填滚动的像素。

返回类型ChromiumTab / MixTab / ChromiumFrame
说明:返回页面对象自身。

📌 scroll.up()

scroll.up() 方法用于使页面向上滚动若干像素,水平位置不变。

参数

参数名称类型默认值说明
pixelint必填滚动的像素。

返回类型ChromiumTab / MixTab / ChromiumFrame
说明:返回页面对象自身。

示例

tab.scroll.up(30)
📌 scroll.right()

scroll.right() 方法用于使页面向右滚动若干像素,垂直位置不变。

参数

参数名称类型默认值说明
pixelint必填滚动的像素。

返回类型ChromiumTab / MixTab / ChromiumFrame
说明:返回页面对象自身。

📌 scroll.left()

scroll.left() 方法用于使页面向左滚动若干像素,垂直位置不变。

参数

参数名称类型默认值说明
pixelint必填滚动的像素。

返回类型ChromiumTab / MixTab / ChromiumFrame
说明:返回页面对象自身。

📌 scroll.to_top()

scroll.to_top() 方法用于滚动页面到顶部,水平位置不变。

参数:无

返回类型ChromiumTab / MixTab / ChromiumFrame
说明:返回页面对象自身。

示例

tab.scroll.to_top()
📌 scroll.to_bottom()

scroll.to_bottom() 方法用于滚动页面到底部,水平位置不变。

参数:无

返回类型ChromiumTab / MixTab / ChromiumFrame
说明:返回页面对象自身。

📌 scroll.to_half()

scroll.to_half() 方法用于滚动页面到垂直中间位置,水平位置不变。

参数:无

返回类型ChromiumTab / MixTab / ChromianFrame
说明:返回页面对象自身。

📌 scroll.to_rightmost()

scroll.to_rightmost() 方法用于滚动页面到最右边,垂直位置不变。

参数:无

返回类型ChromiumTab / MixTab / ChromiumFrame
说明:返回页面对象自身。

📌 scroll.to_leftmost()

scroll.to_leftmost() 方法用于滚动页面到最左边,垂直位置不变。

参数:无

返回类型ChromiumTab / MixTab / ChromiumFrame
说明:返回页面对象自身。

📌 scroll.to_location()

scroll.to_location() 方法用于滚动页面到指定位置。

参数

参数名称类型默认值说明
xint必填水平位置,单位是像素。
yint必填垂直位置,单位是像素。

返回类型ChromiumTab / MixTab / ChromiumFrame
说明:返回页面对象自身。

示例

tab.scroll.to_location(300, 50)
📌 scroll.to_see()

scroll.to_see() 方法用于滚动页面直到元素可见。

参数

参数名称类型默认值说明
loc_or_elestr / tuple / ChromiumElement必填元素的定位信息,可以是元素、定位符。
centerbool / NoneNone是否尽量滚动到页面正中,为 None 时如果被遮挡,则滚动到页面正中。

返回类型ChromiumTab / MixTab / ChromiumFrame
说明:返回页面对象自身。

示例

# 滚动到某个已获得到的元素
ele = tab.ele('tag:div')
tab.scroll.to_see(ele)# 滚动到按定位符查找到的元素
tab.scroll.to_see('tag:div')

9. 滚动设置
📌 set.scroll.smooth()

set.scroll.smooth() 方法设置网站是否开启平滑滚动。建议用此方法为网页关闭平滑滚动。

参数

参数名称类型默认值说明
on_offboolTruebool 表示开或关。

返回类型:None

示例

tab.set.scroll.smooth(on_off=False)
📌 set.scroll.wait_complete()

set.scroll.wait_complete() 方法用于设置滚动后是否等待滚动结束。在不想关闭网页平滑滚动功能时,可开启此设置以保障滚动结束后才执行后面的步骤。

参数

参数名称类型默认值说明
on_offboolTruebool 表示开或关。

返回类型:None

示例

tab.set.scroll.wait_complete(on_off=True)

10. 弹出消息处理
📌 handle_alert()

handle_alert() 方法用于处理提示框。它能够设置等待时间,等待提示框出现才进行处理,若超时没等到提示框,返回 False。也可以只获取提示框文本而不处理提示框。还可以处理下一个出现的提示框,这在处理离开页面时触发的弹窗非常有用。

参数

参数名称类型默认值说明
acceptbool / NoneTrueTrue 表示确认,False 表示取消,None 不会按按钮但依然返回文本值。
sendstrNone处理 prompt 提示框时可输入文本。
timeoutfloatNone等待提示框出现的超时时间(秒),为 None 时使用页面整体超时时间。
next_oneboolFalse是否处理下一个出现的弹窗,为 Truetimeout 参数无效。

返回类型str / False
说明:提示框内容文本,未等到提示框则返回 False

示例

# 确认提示框并获取提示框文本
txt = tab.handle_alert()# 点击取消
tab.handle_alert(accept=False)# 给 `prompt` 提示框输入文本并点击确定
tab.handle_alert(accept=True, send='some text')# 不处理提示框,只获取提示框文本
txt = tab.handle_alert(accept=None)
📌 自动处理

标签页对象 可使用 set.auto_handle_alert() 方法设置自动处理该 tab 的提示框,使提示框不会弹窗而直接被处理掉。

参数

参数名称类型默认值说明
on_offboolTrue开或关。
acceptboolTrue确定还是取消。

返回类型:None

示例

from DrissionPage import Chromiumtab = Chromium().latest_tab
tab.set.auto_handle_alert()  # 这之后出现的弹窗都会自动确认

全局自动处理

如果需要设置所有标签页都自动处理 alert,可用 Chromium 对象进行设置。

from DrissionPage import Chromiumbrowser = Chromium()
browser.set.auto_handle_alert()

或者

from DrissionPage import Chromiumtab = Chromium().latest_tab
tab.browser.set.auto_handle_alert()

11. 关闭及重连
📌 disconnect()

disconnect() 方法用于页面对象断开与页面的连接,但不关闭标签页。断开后,对象不能对标签页进行操作。TabChromiumFrame 对象都有此方法。

参数:无

返回类型:None

📌 reconnect()

reconnect() 方法用于关闭与页面连接,然后重建一个新连接。这主要用于应付长期运行导致内存占用过高,断开连接可释放内存,然后重连继续控制浏览器。TabChromiumFrame 对象都有此方法。

参数

参数名称类型默认值说明
waitfloat0关闭后等待多少秒再连接。

返回类型:None

📌 close()

close() 方法用于关闭标签页。可关闭自己或自己以外的。

参数

参数名称类型默认值说明
othersboolFalse是否关闭自己以外的标签页。
sessionboolFalse是否同时关闭内置 Session 对象,只对自己有效。

返回类型:None


相关文章:

  • JavaScript【6】事件
  • 进阶-数据结构部分:​​​​​​​2、常用排序算法
  • 动态规划(3)学习方法论:构建思维模型
  • MATLAB2025新功能
  • 2025/517学习
  • STM32 | FreeRTOS 消息队列
  • Flink 数据传输机制
  • 6.1.1图的基本概念
  • DeepSeek快速指南:提升效率,告别内耗
  • 深入理解 requestIdleCallback:浏览器空闲时段的性能优化利器
  • OpenCV级联分类器
  • webpack 学习
  • Git 项目切换到新的远程仓库地址
  • NVMe简介6之PCIe事务层
  • 框架之下再看HTTP请求对接后端method
  • PLC和变频器之间如何接线
  • Java 快速转 C# 教程
  • 科技晚报 AI 速递:今日科技热点一览 丨 2025 年 5 月 17 日
  • 网关GateWay——连接不同网络的关键设备
  • 【蓝桥杯省赛真题51】python石头运输 第十五届蓝桥杯青少组Python编程省赛真题解析
  • 经济日报:人工智能开启太空经济新格局
  • 价格周报|本周猪价继续下探,机构预计今年猪价中枢有支撑
  • 新闻1+1丨强对流天气频繁组团来袭,该如何更好应对?
  • 马上评|家长抱婴儿值护学岗,如何避免“被自愿”?
  • 新版城市规划体检评估解读:把城市安全韧性摆在更加突出位置
  • 中央军委决定调整组建3所军队院校