Skip to content

🚤 获取网页信息

成功访问网页后,可使用ChromiumPage自身属性和方法获取页面信息。

操控浏览器除了ChromiumPage,还有ChromiumTabChromiumFrame两种页面对象分别对应于标签页对象和<iframe>元素对象,后面会有单独章节介绍。

✅️️ 运行状态信息

📌 url

此属性返回当前访问的 url。

返回类型:str


📌 address

此属性返回当前对象控制的页面地址和端口。

返回类型:str

print(page.address)

输出:

127.0.0.1:9222

📌 tab_id

返回类型:str

此属性返回当前标签页的 id。


📌 process_id

此属性返回浏览器进程 id。

返回类型:intNone


📌 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


✅️️ 窗口信息

📌 sizerect.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,可对其赋值。

返回类型:intfloat

# 创建页面对象时指定
page = ChromiumPage(timeout=5)

# 修改 timeout
page.timeout = 20

📌 timeouts

此属性以字典方式返回三种超时时间。

  • 'implicit':与timeout属性是同一个值

  • 'page_load':用于等待页面加载

  • 'script':用于等待脚本执行

返回类型:dict

print(page.timeouts)

输出:

{'implicit': 10, 'pageLoad': 30.0, 'script': 30.0}

📌 retry_times

此属性为网络连接失败时的重试次数。默认为 3,可对其赋值。

返回类型:int

# 修改重试次数
page.retry_times = 5

📌 retry_interval

此属性为网络连接失败时的重试等待间隔秒数。默认为 2,可对其赋值。

返回类型:intfloat

# 修改重试等待间隔时间
page.retry_interval = 1.5

📌 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时只包含namevaluedomain信息
返回类型 说明
dict as_dictTrue时,返回字典格式 cookies
list as_dictFalse时,返回 cookies 组成的列表

示例:

from DrissionPage import ChromiumPage

p = ChromiumPage()
p.get('http://www.baidu.com')

for i in p.get_cookies(as_dict=False):
    print(i)

输出:

{'domain': '.baidu.com', 'domain_specified': True, ......}
......

📌 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'NoneTrue
不为Nonepath参数无效
True时选用 jpg 格式
as_base64 str
True
None 是否以 base64 形式返回图片,可选'jpg''jpeg''png''webp'NoneTrue
不为Nonepath参数无效
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_bytesas_base64None时返回图片完整路径
str as_base64生效时返回 base64 格式的字符串
# 对整页截图并保存
page.get_screenshot(path='D:\\page.png', full_page=True)

✅️️ 页面录取

使用页面对象的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_modefrugal_video_mode时,保存路径和保存文件名必须是英文。

  • 使用video_modefrugal_video_mode时,须先安装 opencv 库。pip install opencv-python

  • 使用js_video_mode时,须用鼠标手动选择要录制的目标,才能开始录制

  • 使用js_video_mode时,如要对一个窗口进行录制,须在另一个窗口开始录制,否则如窗口出现跳转,会使录制失效

📌 示例

from DrissionPage import ChromiumPage

page = ChromiumPage()
page.screencast.set_save_path('video')  # 设置视频存放路径
page.screencast.set_mode.video_mode()  # 设置录制
page.screencast.start()  # 开始录制
sleep(3)
page.screencast.stop()  # 停止录制