🚤 获取网页信息
成功访问网页后,可使用ChromiumPage
自身属性和方法获取页面信息。
操控浏览器除了ChromiumPage
,还有ChromiumTab
和ChromiumFrame
两种页面对象分别对应于标签页对象和<iframe>
元素对象,后面会有单独章节介绍。
✅️️ 运行状态信息
📌 url
此属性返回当前访问的 url。
返回类型:str
📌 address
此属性返回当前对象控制的页面地址和端口。
返回类型:str
输出:
📌 tab_id
返回类型:str
此属性返回当前标签页的 id。
📌 process_id
此属性返回浏览器进程 id。
返回类型:int
、None
📌 is_loading
此属性返回页面是否正在加载状态。
返回类型:bool
📌 is_alive
此属性返回页面是否仍然可用,标签页已关闭则返回False
。
返回类型:bool
📌 ready_state
此属性返回页面当前加载状态,有 3 种:
-
'loading'
:表示文档还在加载中 -
'interactive'
:DOM 已加载,但资源未加载完成 -
'complete'
:所有内容已完成加载
返回类型:str
📌 url_available
此属性以布尔值返回当前链接是否可用。
返回类型:bool
✅️️ 页面信息
📌 html
此属性返回当前页面 html 文本。
返回类型:str
📌 json
此属性把请求内容解析成 json。
假如用浏览器访问会返回 json 数据的 url,浏览器会把 json 数据显示出来,这个参数可以把这些数据转换为dict
格式。
返回类型:dict
📌 title
此属性返回当前页面title
文本。
返回类型:str
📌 user_agent
此属性返回当前页面 user agent 信息。
返回类型:str
✅️️ 窗口信息
📌 size
和rect.page_size
这两个属性是一样的,以tuple
返回页面大小,格式:(宽, 高)。
返回类型:Tuple[int, int]
📌 rect.browser_size
此属性以tuple
返回浏览器窗口大小,格式:(宽, 高)。
返回类型:Tuple[int, int]
📌 rect.viewport_size
此属性以tuple
返回视口大小,不含滚动条,格式:(宽, 高)。
返回类型:Tuple[int, int]
📌 rect.viewport_size_with_scrollbar
此属性以tuple
返回浏览器窗口大小,含滚动条,格式:(宽, 高)。
返回类型:Tuple[int, int]
📌 rect.page_location
此属性以tuple
返回页面左上角在屏幕中坐标,左上角为(0, 0)。
返回类型:Tuple[int, int]
📌 rect.browser_location
此属性以tuple
返回浏览器在屏幕上的坐标,左上角为(0, 0)。
返回类型:Tuple[int, int]
📌 rect.viewport_location
此属性以tuple
返回视口在屏幕中坐标,左上角为(0, 0)。
返回类型:Tuple[int, int]
📌 rect.window_state
此属性以返回窗口当前状态,有'normal'
、'fullscreen'
、'maximized'
、 'minimized'
几种。
返回类型:str
✅️️ 配置参数信息
📌 timeout
此属性为整体默认超时时间,包括元素查找、点击、处理提示框、列表选择等须要用到超时设置的地方,都以这个数据为默认值。
默认为 10,可对其赋值。
返回类型:int
、float
📌 timeouts
此属性以字典方式返回三种超时时间。
-
'implicit'
:与timeout
属性是同一个值 -
'page_load'
:用于等待页面加载 -
'script'
:用于等待脚本执行
返回类型:dict
输出:
📌 retry_times
此属性为网络连接失败时的重试次数。默认为 3,可对其赋值。
返回类型:int
📌 retry_interval
此属性为网络连接失败时的重试等待间隔秒数。默认为 2,可对其赋值。
返回类型:int
、float
📌 page_load_strategy
此属性返回页面加载策略,有 3 种:
-
'normal'
:等待页面所有资源完成加载 -
'eager'
:DOM 加载完成即停止 -
'none'
:页面完成连接即停止
返回类型:str
✅️️ cookies 和缓存信息
📌 cookies
此属性以dict
方式返回当前页面所使用的 cookies。
须要注意的是,如果不同子域名使用相同的name
属性,此属性返回的 cookies 可能有缺失。
返回类型:dict
📌 get_cookies()
此方法获取 cookies 并以 cookie 组成的list
形式返回。
参数名称 | 类型 | 默认值 | 说明 |
---|---|---|---|
as_dict |
bool |
False |
是否以字典方式返回结果,为False 返回 cookie 组成的list ,且all_info 参数无效 |
all_domains |
bool |
False |
是否返回所有 cookies,为False 只返回当前 url 的 |
all_info |
bool |
False |
返回的 cookies 是否包含所有信息,False 时只包含name 、value 、domain 信息 |
返回类型 | 说明 |
---|---|
dict |
as_dict 为True 时,返回字典格式 cookies |
list |
as_dict 为False 时,返回 cookies 组成的列表 |
示例:
from DrissionPage import ChromiumPage
p = ChromiumPage()
p.get('http://www.baidu.com')
for i in p.get_cookies(as_dict=False):
print(i)
输出:
📌 get_session_storage()
此方法用于获取 sessionStorage 信息,可获取全部或单个项。
参数名称 | 类型 | 默认值 | 说明 |
---|---|---|---|
item |
str |
None |
要获取的项目,为None 则返回全部项目组成的字典 |
返回类型 | 说明 |
---|---|
dict |
item 参数为None 时返回所有项目 |
str |
指定item 时返回该项目内容 |
📌 get_local_storage()
此方法用于获取 localStorage 信息,可获取全部或单个项。
参数名称 | 类型 | 默认值 | 说明 |
---|---|---|---|
item |
str |
None |
要获取的项目,为None 则返回全部项目组成的字典 |
返回类型 | 说明 |
---|---|
dict |
item 参数为None 时返回所有项目 |
str |
指定item 时返回该项目内容 |
✅️️ 内嵌对象
📌 driver
此属性返回当前页面对象使用的ChromiumDriver
对象。
返回类型:ChromiumDriver
✅️️ 页面截图
📌 get_screenshot()
此方法用于对页面进行截图,可对整个网页、可见网页、指定范围截图。对可视范围外截图需要 90 以上版本浏览器支持。
下面三个参数三选一,优先级:as_bytes
>as_base64
>path
。
参数名称 | 类型 | 默认值 | 说明 |
---|---|---|---|
path |
str Path |
None |
保存图片的完整路径,文件后缀可选'jpg' 、'jpeg' 、'png' 、'webp' 为 None 时以 jpg 格式保存在当前文件夹 |
as_bytes |
str True |
None |
是否已字节形式返回图片,可选'jpg' 、'jpeg' 、'png' 、'webp' 、None 、True 不为 None 时path 参数无效为 True 时选用 jpg 格式 |
as_base64 |
str True |
None |
是否以 base64 形式返回图片,可选'jpg' 、'jpeg' 、'png' 、'webp' 、None 、True 不为 None 时path 参数无效为 True 时选用 jpg 格式 |
full_page |
bool |
False |
是否整页截图,为True 截取整个网页,为False 截取可视窗口 |
left_top |
Tuple[int, int] |
None |
截取范围左上角坐标 |
right_bottom |
Tuple[int, int] |
None |
截取范围右下角坐标 |
返回类型 | 说明 |
---|---|
bytes |
as_bytes 生效时返回图片字节 |
str |
as_bytes 和as_base64 为None 时返回图片完整路径 |
str |
as_base64 生效时返回 base64 格式的字符串 |
✅️️ 页面录取
使用页面对象的screencast
功能,可以录取屏幕图片或视频。
📌 设置录制模式
录制模式一共有 5 种,通过screencast.set_mode.xxx_mode()
设置。
模式 | 说明 |
---|---|
video_mode() |
持续录制页面,停止时生成没有声音的视频 |
frugal_video_mode() |
页面有变化时才录制,停止时生成没有声音的视频 |
js_video_mode() 🧪 |
可生成有声音的视频,但须要手动启动,此功能还在测试阶段 |
imgs_mode() |
持续对页面进行截图 |
frugal_imgs_mode() |
页面有变化时才保存页面图像 |
📌 设置存放路径
使用screencast.set_save_path()
设置录制结果保存路径。
参数名称 | 类型 | 默认值 | 说明 |
---|---|---|---|
save_path |
str Path |
None |
保存图片或视频的路径 |
返回:None
📌 screencast.start()
此方法用于开始录制浏览器窗口。
参数名称 | 类型 | 默认值 | 说明 |
---|---|---|---|
save_path |
str Path |
None |
保存图片或视频的路径 |
返回:None
注意:
保存路径必须设置,无论是用screencast.set()
还是screencast.start()
都可以。
📌 screencast.stop()
此方法用于停止录取屏幕。
参数名称 | 类型 | 默认值 | 说明 |
---|---|---|---|
video_name |
str |
None |
视频文件名,为None 时以当前时间名命 |
返回类型 | 说明 |
---|---|
str |
保存为视频时返回视频文件路径,否则返回保存图片的文件夹路径 |
📌 注意事项
-
使用
video_mode
和frugal_video_mode
时,保存路径和保存文件名必须是英文。 -
使用
video_mode
和frugal_video_mode
时,须先安装 opencv 库。pip install opencv-python
-
使用
js_video_mode
时,须用鼠标手动选择要录制的目标,才能开始录制 -
使用
js_video_mode
时,如要对一个窗口进行录制,须在另一个窗口开始录制,否则如窗口出现跳转,会使录制失效