diff --git a/README.md b/README.md
index 2bfb809..170fabf 100644
--- a/README.md
+++ b/README.md
@@ -1,7 +1,5 @@
# ✨️简洁!易用 !方便!✨️
-# ⭐️ 简介
-
DrissionPage,即 driver 和 session 组合而成的 page。
是个基于 python 的 Web 自动化操作集成工具。
它用 POM 模式封装了页面和元素常用的方法,
@@ -16,7 +14,7 @@ DrissionPage,即 driver 和 session 组合而成的 page。
**联系邮箱:** g1879@qq.com
-## 📔 背景
+## 📕 背景
requests 爬虫面对要登录的网站时,要分析数据包、JS 源码,构造复杂的请求,往往还要应付验证码、JS 混淆、签名参数等反爬手段,门槛较高。若数据是由 JS 计算生成的,还须重现计算过程,体验不好,开发效率不高。
使用 selenium,可以很大程度上绕过这些坑,但 selenium 效率不高。因此,这个库将 selenium 和 requests 合而为一,不同须要时切换相应模式,并提供一种人性化的使用方法,提高开发和运行效率。
@@ -27,7 +25,7 @@ requests 爬虫面对要登录的网站时,要分析数据包、JS 源码,
作者有多年自动化和爬虫经验,踩过无数坑,总结出的经验全写到这个库里了。内置了 N 多实用功能,对常用功能作了整合和优化。
-## 🔮 特性
+## 🎉 特性
- 代码高度集成,以简洁的代码为第一追求。
- 页面对象可在 selenium 和 requests 模式间任意切换,保留登录状态。
@@ -62,13 +60,13 @@ requests 爬虫面对要登录的网站时,要分析数据包、JS 源码,
- d 模式配置可同时兼容`debugger_address`和其它参数,原生不能兼容。
- 还有很多这里不一一列举…………
-# 🪄 简单演示
+# 🍀 简单演示
-**与 selenium 代码对比**
+☘️ **与 selenium 代码对比**
以下代码实现一模一样的功能,对比两者的代码量:
-- 用显性等待方式定位第一个文本包含`some text`的元素
+🌿 用显性等待方式定位第一个文本包含`some text`的元素
```python
# 使用 selenium:
@@ -78,7 +76,7 @@ element = WebDriverWait(driver).until(ec.presence_of_element_located((By.XPATH,
element = page('some text')
```
-- 跳转到第一个标签页
+🌿 跳转到第一个标签页
```python
# 使用 selenium:
@@ -88,7 +86,7 @@ driver.switch_to.window(driver.window_handles[0])
page.to_tab(0)
```
-- 按文本选择下拉列表
+🌿 按文本选择下拉列表
```python
# 使用 selenium:
@@ -100,7 +98,7 @@ select_element.select_by_visible_text('text')
element.select('text')
```
-- 拖拽一个元素
+🌿 拖拽一个元素
```python
# 使用 selenium:
@@ -110,7 +108,7 @@ ActionChains(driver).drag_and_drop(ele1, ele2).perform()
ele1.drag_to(ele2)
```
-- 滚动窗口到底部(保持水平滚动条不变)
+🌿 滚动窗口到底部(保持水平滚动条不变)
```python
# 使用 selenium:
@@ -120,7 +118,7 @@ driver.execute_script("window.scrollTo(document.documentElement.scrollLeft, docu
page.scroll.to_bottom()
```
-- 设置 headless 模式
+🌿 设置 headless 模式
```python
# 使用 selenium:
@@ -131,7 +129,7 @@ options.add_argument("--headless")
set_headless()
```
-- 获取伪元素内容
+🌿 获取伪元素内容
```python
# 使用 selenium:
@@ -141,7 +139,7 @@ text = webdriver.execute_script('return window.getComputedStyle(arguments[0], ":
text = element.pseudo_after
```
-- shadow-root 操作
+🌿 shadow-root 操作
selenium 新增了`ShadowRoot`,但功能实在是太少。
```python
@@ -156,7 +154,7 @@ ele = shadow_element.ele('tag:div')
ele.click()
```
-- 用 xpath 直接获取属性或文本节点(返回文本)
+🌿 用 xpath 直接获取属性或文本节点(返回文本)
```python
# 使用 selenium:
@@ -167,7 +165,7 @@ class_name = element('xpath://div[@id="div_id"]/@class')
text = element('xpath://div[@id="div_id"]/text()[2]')
```
-- 随时让浏览器窗口消失和显示
+🌿 随时让浏览器窗口消失和显示
```python
# selenium 无此功能
@@ -179,11 +177,11 @@ page.show_browser() # 重新显示浏览器窗口
注:本功能只支持 Windows,且须设置了`local_port`或`debugger_address`参数时才能生效。
-**与 requests 代码对比**
+☘️ **与 requests 代码对比**
以下代码实现一模一样的功能,对比两者的代码量:
-- 获取元素内容
+🌿 获取元素内容
```python
url = 'https://baike.baidu.com/item/python'
@@ -204,7 +202,7 @@ title = page('tag:h1').text
Tips: DrissionPage 自带默认`headers`
-- 下载文件
+🌿 下载文件
```python
url = 'https://www.baidu.com/img/flexible/logo/pc/result.png'
@@ -220,7 +218,7 @@ with open(f'{save_path}\\img.png', 'wb') as fd:
page.download(url, save_path, 'img') # 支持重命名,处理文件名冲突,自动创建目标文件夹
```
-**模式切换**
+☘️ **模式切换**
用 selenium 登录网站,然后切换到 requests 读取网页。两者会共享登录信息。
@@ -267,7 +265,7 @@ Git 命令学习 https://oschina.gitee.io/learn-git-branching/
Git 命令学习
```
-# 🔠 使用方法
+# 🛠 使用方法
[点击跳转到使用文档](http://g1879.gitee.io/drissionpage)
@@ -282,6 +280,5 @@ Git 命令学习
如果本项目对您有所帮助,不妨请作者我喝杯咖啡 :)
-|  |  |
-| ------------------------------------------------------------ | ------------------------------------------------------------ |
+
diff --git a/docs/README.md b/docs/README.md
index a50a4b2..d0893d0 100644
--- a/docs/README.md
+++ b/docs/README.md
@@ -33,7 +33,7 @@ requests 爬虫面对要登录的网站时,要分析数据包、JS 源码,
- 两种模式提供一致的 API,使用体验一致。
- 人性化设计,集成众多实用功能,大大降低开发工作量。
-## 💡 亮点功能
+## 🎇 亮点功能
- 每次运行程序可以反复使用已经打开的浏览器。如手动设置网页到某个状态,再用程序接管,或手动处理登录,再用程序爬内容。无须每次运行从头启动浏览器,超级方便。
- 使用 ini 文件保存常用配置,自动调用,也提供便捷的设置 API,远离繁杂的配置项。
@@ -69,6 +69,4 @@ requests 爬虫面对要登录的网站时,要分析数据包、JS 源码,
如果本项目对您有所帮助,不妨请作者我喝杯咖啡 :)
-|  |  |
-| ------------------------------------------------------------ | ------------------------------------------------------------ |
-
+
diff --git a/docs/Tips大集合.md b/docs/Tips大集合.md
index 15bde77..a70baef 100644
--- a/docs/Tips大集合.md
+++ b/docs/Tips大集合.md
@@ -1,26 +1,26 @@
## 全局
-- 切换模式时会自动复制 cookies 到目标模式,并在目标模式下重新访问当前网址,可在参数中禁止自动访问。
-- 访问网址时如遇到异常,会自动重试3次,也可在对象属性或连接参数里设置重试次数和间隔时间。d 模式这个功能要重载了 check_page() 方法才有效。
-- 获取到的文本会自动替换 & nbsp; 为空格。
-- 可以在元素下直接使用 > 以 css selector 方式获取当前元素直接子元素。如 ele1.ele('css:>div')。原生不支持这种写法。
-- 用 xpath 获取元素的子元素时,可省略前面的 .。如 ele1.ele('div') 和 ele1.ele('.//div') 是一致的。
+- 切换模式时会自动复制`cookies`到目标模式,并在目标模式下重新访问当前网址,可在参数中禁止自动访问。
+- 访问网址时如遇到异常,会自动重试 3 次,也可在对象属性或连接参数里设置重试次数和间隔时间。d 模式这个功能要重载了`check_page()`方法才有效。
+- 获取到的文本会自动替换` `为空格。
+- 可以在元素下直接使用`>`以 css selector 方式获取当前元素直接子元素。如`ele1.ele('css:>div')`。原生不支持这种写法。
+- 用 xpath 获取元素的子元素时,可省略前面的`.`。如`ele1.ele('div')`和`ele1.ele('.//div')`是一致的。
- 保存空的配置对象时,如没有指定路径,会保存到默认 ini 文件。
-- download() 方法会自动创建 goal_path 参数的文件夹,因此可直接传入不存在的文件夹路径。
-- set_cookies()可以接收RequestsCookieJar, list, tuple, str, dict,只要格式对扔进去它会自动调整。其中 list 和 tuple 的内容可为 Cookie对象、dict、str。
+- `download()`方法会自动创建`goal_path`参数的文件夹,因此可直接传入不存在的文件夹路径。
+- `set_cookies()`可以接收`RequestsCookieJar`、`list`、`tuple`、`str`、`dict`,只要格式对扔进去它会自动调整。其中`list`和`tuple`的内容可为`Cookie`、`dict`、`str`。
## s 模式
-- 在创建 MixPage 对象时传入的 Session 配置是全局有效的,一般无须每次连接传入。
-- ini 文件里设置了默认 s 模式的 headers,一般情况可直接使用,也可手动设置。
-- s 模式访问网页时会自动纠正编码,具体为先从 headers 获取,再从页面 meta 标签获取,都找不到就执行 r.apparent_encoding。因此无须手动设置。
-- 如果没有传入 referer 和 host 值,s 模式在连接时会自动根据当前域名自动填写 Host 和 Referer 属性。
+- 在创建`MixPage`对象时传入的`Session`配置是全局有效的,一般无须每次连接传入。
+- ini 文件里设置了默认 s 模式的`headers`,一般情况可直接使用,也可手动设置。
+- s 模式访问网页时会自动纠正编码,具体为先从`headers`获取,再从页面`meta`标签获取,都找不到就执行`r.apparent_encoding`。因此无须手动设置。
+- 如果没有传入`referer`和`host`值,s 模式在连接时会自动根据当前域名自动填写`Host`和`Referer`属性。
## d 模式
-- d 模式查找元素默认设置等待超时10秒,10秒内找到立即返回元素,超时返回 None。也可指定超时时间。
-- cilck() 方法用 selenium 点击失败时会用 js 方式重试,也可在参数里指定直接用 js 或不用 js 重试。
-- click() 方法可设置 timeout 参数,在时间内会不断重试点击目标,click(by_js=False) 可用于等待覆盖在元素上的遮罩层消失。
-- 可以用 xpath 直接获取元素属性或文本节点内容,如ele1.ele('xpath://div/@class')或ele1.ele('xpath://div/text()[2]')。原生不支持这种用法。
-- 在 MixPage 对象设置 timeout 后,该页面下所有元素的查找都会遵循该设置,该值默认为 10。也可以每次查找元素时单独设置,单独设置不影响页面对象的 timeout 属性。
-- 若设置了 debugger_address,创建 driver 时程序会自动检测该端口,如为空,则自动在该端口启动一个浏览器进程并接入。程序完毕该浏览器不自动关闭,以便后续使用。
\ No newline at end of file
+- d 模式查找元素默认设置等待超时 10 秒,10 秒内找到立即返回元素,超时返回`None`。也可指定超时时间。
+- `cilck()`方法用 selenium 点击失败时会用 js 方式重试,也可在参数里指定直接用 js 或不用 js 重试。
+- `click()`方法可设置`timeout`参数,在时间内会不断重试点击目标,`click(by_js=False)`可用于等待覆盖在元素上的遮罩层消失。
+- 可以用 xpath 直接获取元素属性或文本节点内容,如`ele1.ele('xpath://div/@class')`或`ele1.ele('xpath://div/text()[2]')`。原生不支持这种用法。
+- 在`MixPage`对象设置`timeout`后,该页面下所有元素的查找都会遵循该设置,该值默认为 10。也可以每次查找元素时单独设置,单独设置不影响页面对象的`timeout`属性。
+- 若设置了`local_port`或`debugger_address`,创建 driver 时程序会自动检测该端口,如为空,则自动在该端口启动一个浏览器进程并接入。程序完毕该浏览器不自动关闭,以便后续使用。
\ No newline at end of file
diff --git a/docs/_coverpage.md b/docs/_coverpage.md
index ed15bce..6d9625c 100644
--- a/docs/_coverpage.md
+++ b/docs/_coverpage.md
@@ -1,4 +1,4 @@
-## DrissionPage
+# DrissionPage
以页面为单位整合 selenium 和 requests,封装了常用操作。
极大地简化了代码,易于使用,并可实现两种模式的无缝切换。
diff --git a/docs/_sidebar.md b/docs/_sidebar.md
index 592e982..9d205c4 100644
--- a/docs/_sidebar.md
+++ b/docs/_sidebar.md
@@ -1,43 +1,43 @@
* [⭐️ 简介](README.md)
-* 🧭入门指南
- * [🪄 基本概念](入门指南\基本概念.md)
- * [🖐🏻 快速上手](入门指南\快速上手.md)
- * 🎭 特性演示
- * [🐙 与 requests 对比](入门指南\特性演示\与requests代码对比.md)
- * [🐟 与 selenium 对比](入门指南\特性演示\与selenium代码对比.md)
- * [🦈 模式切换](入门指南\特性演示\模式切换.md)
- * [🐳 获取并打印元素属性](入门指南\特性演示\获取并打印元素属性.md)
- * [🐬 下载文件](入门指南\特性演示\下载文件.md)
+* [🧭 入门指南](#)
+ * [🔥 基本概念](入门指南\基本概念.md)
+ * [👍 快速上手](入门指南\快速上手.md)
+ * [🍀 特性演示](#)
+ * [🌿 与 requests 对比](入门指南\特性演示\与requests代码对比.md)
+ * [🌿 与 selenium 对比](入门指南\特性演示\与selenium代码对比.md)
+ * [🌿 模式切换](入门指南\特性演示\模式切换.md)
+ * [🌿 获取并打印元素属性](入门指南\特性演示\获取并打印元素属性.md)
+ * [🌿 下载文件](入门指南\特性演示\下载文件.md)
-* 🔠使用方法
- * [🐵 创建页面对象](使用方法\创建页面对象.md)
- * [🦊 访问网页](使用方法\访问网页.md)
- * [🐶 查找页面元素](使用方法\查找页面元素.md)
- * [🦝 获取元素信息](使用方法\获取元素信息.md)
- * [🐱 元素操作](使用方法\元素操作.md)
- * [🐮 获取网页信息](使用方法\获取网页信息.md)
- * [🐷 页面操作](使用方法\页面操作.md)
- * 🐻 启动配置
- * [🐉 概述](使用方法\启动配置\概述.md)
- * [🦖 Chrome 启动配置]('使用方法\启动配置\Chrome启动配置.md')
- * [🦕 Session 启动配置](使用方法\启动配置\Session启动配置.md)
- * [🐊 使用配置文件](使用方法\启动配置\使用配置文件.md)
- * [🐼 下载文件](使用方法\下载文件.md)
- * [🐨 cookies 的使用](使用方法\cookies的使用.md)
- * [🐰 Drission 对象](使用方法\Drission对象.md)
- * [🐹 对接 selenium 及 requests 代码](使用方法\对接selenium及requests代码.md)
- * [🦇 使用其它浏览器](使用方法\使用其它浏览器.md)
- * [🦒 DriverPage 和 SessionPage](使用方法\DriverPage和SessionPage.md)
- * [🐭 打包程序](使用方法\打包程序.md)
+* [🛠 使用方法](#)
+ * [🔨 创建页面对象](使用方法\创建页面对象.md)
+ * [🔨 访问网页](使用方法\访问网页.md)
+ * [🔨 查找页面元素](使用方法\查找页面元素.md)
+ * [🔨 获取元素信息](使用方法\获取元素信息.md)
+ * [🔨 元素操作](使用方法\元素操作.md)
+ * [🔨 获取网页信息](使用方法\获取网页信息.md)
+ * [🔨 页面操作](使用方法\页面操作.md)
+ * [🔨 启动配置](#)
+ * [🔧 概述](使用方法\启动配置\概述.md)
+ * [🔧 Chrome 启动配置](使用方法\启动配置\Chrome启动配置.md)
+ * [🔧 Session 启动配置](使用方法\启动配置\Session启动配置.md)
+ * [🔧 使用配置文件](使用方法\启动配置\使用配置文件.md)
+ * [🔨 下载文件](使用方法\下载文件.md)
+ * [🔨 cookies 的使用](使用方法\cookies的使用.md)
+ * [🔨 Drission 对象](使用方法\Drission对象.md)
+ * [🔨 对接 selenium 及 requests 代码](使用方法\对接selenium及requests代码.md)
+ * [🔨 使用其它浏览器](使用方法\使用其它浏览器.md)
+ * [🔨 DriverPage 和 SessionPage](使用方法\DriverPage和SessionPage.md)
+ * [🔨 打包程序](使用方法\打包程序.md)
-* 💖 实用示例
+* [💖 实用示例](#)
* [🧡 自动登录码云](实用示例\自动登录码云.md)
* [🧡 获取各国疫情排名](实用示例\获取各国疫情排名.md)
* [🧡 下载星巴克产品图片](实用示例\下载星巴克产品图片.md)
* [🧡 同时操作多个浏览器](实用示例\同时操作多个浏览器.md)
-* [✨️ Tips大集合](Tips大集合.md)
+* [⚡️ Tips大集合](Tips大集合.md)
* [🎯️ 版本历史](版本历史.md)
* [💐 鸣谢](鸣谢.md)
diff --git a/docs/index.html b/docs/index.html
index bd026e0..35e98cb 100644
--- a/docs/index.html
+++ b/docs/index.html
@@ -8,7 +8,11 @@
-
+
+
+
+
+