DrissionPage/docs/WebPage使用方法/3.6获取网页信息.md
2023-01-05 14:54:30 +00:00

240 lines
6.0 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

页面对象共有以下几种:
- `WebPage`:可在 s 和 d 模式之间切换,整合两种模式
- `ChromiumPage`:单纯用于操作浏览器,工作于 d 模式
- `ChromiumTab`:浏览器标签页对象,用于支持同时操作个多标签页
- `ChromiumFrame``<iframe>`元素对象,专门用于操作该元素
- `SessionPage`:单纯用于收发数据包,工作于 s 模式
各种页面对象使用方法是一致的,以下用`WebPage`按两种模式介绍。d 模式包含 s模式所有属性。
`ChromiumTab``ChromiumFrame`具体用法将在后面章节单独介绍。
# ✔️ 运行状态信息
## 📍 `url`
此属性返回当前访问的 url两种模式均支持。
## 📍 `address`
此属性返回当前对象控制的页面地址和端口,仅用于 d 模式。
```python
print(page.address)
# 输出127.0.0.1:9222
```
## 📍 `tab_id`
此属性返回当前标签页的 id仅用于 d 模式。
## 📍 `mode`
此属性返回当前页面对象的模式,`'s'``'d'`
## 📍 `process_id`
此属性返回浏览器进程 id仅用于 d 模式。
## 📍 `is_loading`
此属性返回页面是否正在加载状态,仅用于 d 模式。
## 📍 `ready_state`
此属性返回页面当前加载状态,有 3 种:`'loading'``'interactive'``'complete'`,仅用于 d 模式。
## 📍 `url_available`
此属性以布尔值返回当前链接是否可用,两种模式均支持。
# ✔️ 窗口及页面信息
## 📍 `size`
此属性以`tuple`返回页面尺寸,仅用于 d 模式。格式:(宽度, 高度)。
## 📍 `tabs_count`
此属性返回当前浏览器标签页数量,仅用于 d 模式。
## 📍 `tabs`
此属性以列表形式返回当前浏览器所有标签页 id仅用于 d 模式。
## 📍 `html`
此属性返回当前页面 html 文本,两种模式均支持。
## 📍 `json`
此属性把请求内容解析成 json两种模式均支持。
比如请求接口时,返回内容是 json 格式,那就可以用这个属性获取。
事实上,用`html`属性获取也是可以的,不过`html`属性没有对文本进行解析。
## 📍 `title`
此属性返回当前页面`title`文本,两种模式均支持。
# ✔️ 配置参数信息
## 📍 `timeout`
s 模式下,此属性代表网络请求超时时间。
d 模式下,此属性为元素查找、点击、处理提示框等操作的超时时间。
默认为 10可对其赋值。
```python
# 创建 MixPage 对象时指定
page = WebPage(timeout=5)
# 修改 timeout
page.timeout = 20
```
## 📍 `timeouts`
此属性以字典方式返回三种超时时间,仅用于 d 模式。
`'implicit'`用于元素查找、点击重试、输入文本重试、处理弹出框重试等;
`'page_load'`用于等待页面加载;
`'script'`用于等待脚本执行。
```python
print(page.timeouts)
```
输出:
```
{'implicit': 10, 'pageLoad': 30.0, 'script': 30.0}
```
## 📍 `retry_times`
此属性为网络连接失败时的重试次数。默认为 3可对其赋值两种模式均支持。
```python
# 修改重试次数
page.retry_times = 5
```
## 📍 `retry_interval`
此属性为网络连接失败时的重试等待间隔秒数。默认为 2可对其赋值两种模式均支持。
```python
# 修改重试等待间隔时间
page.retry_interval = 1.5
```
## 📍 `page_load_strategy`
此属性返回页面加载策略,有 3 种:`'none'``'normal'``'eager'`,仅用于 d 模式。
# ✔️ cookies 和缓存信息
## 📍 `cookies`
此属性以`dict`方式返回当前页面所使用的 cookies两种模式均支持。
## 📍 `get_cookies()`
此方法获取 cookies 并以 cookie 组成的`list`形式返回,两种模式均支持。
**参数:**
- `as_dict`:是否以字典方式返回,为`False`返回 cookie 组成的`list`
- `all_domains`:是否返回所有域的 cookies只有 s 模式下生效
**返回:** cookies 信息
```python
from DrissionPage import WebPage
p = WebPage('s')
p.get('http://www.baidu.com')
p.get('http://gitee.com')
for i in p.get_cookies(as_dict=False, all_domains=True):
print(i)
```
输出:
```
{'domain': '.baidu.com', 'domain_specified': True, ......}
......
{'domain': 'gitee.com', 'domain_specified': False, ......}
......
```
## 📍 `get_session_storage()`
此方法用于获取 sessionStorage 信息,可获取全部或单个项,仅用于 d 模式。
**参数:**
- `item`:要获取的项,不设置则返回全部
**返回:** sessionStorage 一个或所有项内容
## 📍 `get_local_storage()`
此方法用于获取 localStorage 信息,可获取全部或单个项,仅用于 d 模式。
**参数:**
- `item`:要获取的项,不设置则返回全部
**返回:** localStorage 一个或所有项内容
# ✔️ 内嵌对象
## 📍 `session`
此属性返回当前页面对象使用的`Session`对象,仅用于 s 模式。
## 📍 `response`
此属性为 s 模式请求网站后生成的`Response`对象,本库没实现的功能可直接获取此属性调用 requests 库的原生功能,仅用于 s 模式。
```python
# 打印连接状态
r = page.response
print(r.status_code)
```
## 📍 `driver`
此属性返回当前页面对象使用的`ChromiumDriver`对象,仅用于 d 模式。
# ✔️ 页面截图
## 📍 `get_screenshot()`
此方法用于对页面进行截图可对整个网页、可见网页、指定范围截图。对可视范围外截图需要90以上版本浏览器支持仅用于 d 模式。
**参数:**
- `path`:保存图片的完整路径,后缀可选`'jpg'``'jpeg'``'png'``'webp'`
- `as_bytes`:是否已字节形式返回图片,可选`'jpg'``'jpeg'``'png'``'webp'``None``True`
- `full_page`:是否整页截图,为`True`截取整个网页,为`False`截取可视窗口
- `left_top`:截取范围左上角坐标
- `right_bottom`:截取范围右下角角坐标
**返回:** 图片完整路径或字节文本
```python
# 对整页截图并保存
page.get_screenshot(path='D:\\page.png', full_page=True)
```