更新文档

This commit is contained in:
g1879 2023-01-09 16:39:11 +08:00
parent 8b6ff263cd
commit cf3959ddab
8 changed files with 156 additions and 13 deletions

View File

@ -488,8 +488,8 @@ class DriverOptions(Options):
self.timeouts['pageLoad'] *= 1000
self.timeouts['script'] *= 1000
if '--no-sandbox' not in self._arguments:
self._arguments.append('--no-sandbox')
# if '--no-sandbox' not in self._arguments:
# self._arguments.append('--no-sandbox')
@property
def driver_path(self):

View File

@ -58,14 +58,23 @@ DrissionPage 是一个基于 python 的网页自动化工具。
除了以上优点,本库还内置了无数人性化设计。
- 极简的语法规则。集成大量常用功能,代码更优雅
- 定位元素更加容易,功能更强大稳定
- 无处不在的等待和自动重试功能。使不稳定的网络变得易于控制,程序更稳定,编写更省心
- 提供强大的下载工具。操作浏览器时也能享受快捷可靠的下载功能
- 允许反复使用已经打开的浏览器。无须每次运行从头启动浏览器,调试超方便
- 使用 ini 文件保存常用配置,自动调用,提供便捷的设置,远离繁杂的配置项
- 内置 lxml 作为解析引擎,解析速度成几个数量级提升
- 使用 POM 模式封装,可直接用于测试,便于扩展
- 高度集成的便利功能,从每个细节中体现
- 还有很多细节,这里不一一列举,欢迎实际使用中体验:)
# 🌟 简单演示

View File

@ -1,4 +1,4 @@
#
# ✨️ 概述
DrissionPage 是一个基于 python 的网页自动化工具。
@ -10,6 +10,10 @@ DrissionPage 是一个基于 python 的网页自动化工具。
它的语法简洁而优雅,代码量少,对新手友好。
<a href='https://gitee.com/g1879/DrissionPage/stargazers'><img src='https://gitee.com/g1879/DrissionPage/badge/star.svg?theme=dark' alt='star'></img></a> <a href='https://gitee.com/g1879/DrissionPage/members'><img src='https://gitee.com/g1879/DrissionPage/badge/fork.svg?theme=dark' alt='fork'></img></a>
项目地址:[gitee](https://gitee.com/g1879/DrissionPage) | [github](https://github.com/g1879/DrissionPage)
**交流QQ群** 897838127
**联系邮箱:** g1879@qq.com
@ -56,15 +60,24 @@ DrissionPage 是一个基于 python 的网页自动化工具。
除了以上优点,本库还内置了无数人性化设计。
- 极简的语法规则。集成大量常用功能,代码更优雅
- 定位元素更加容易,功能更强大稳定
- 无处不在的等待和自动重试功能。使不稳定的网络变得易于控制,程序更稳定,编写更省心
- 提供强大的下载工具。操作浏览器时也能享受快捷可靠的下载功能
- 允许反复使用已经打开的浏览器。无须每次运行从头启动浏览器,调试超方便
- 使用 ini 文件保存常用配置,自动调用,提供便捷的设置,远离繁杂的配置项
- 内置 lxml 作为解析引擎,解析速度成几个数量级提升
- 使用 POM 模式封装,可直接用于测试,便于扩展
- 高度集成的便利功能,从每个细节中体现
- 还有很多细节,这里不一一列举,欢迎实际使用中体验:)
- 还有很多细节这里不一一列举欢迎实际使用中体验D
# 🖐🏻 免责声明

View File

@ -1,4 +1,4 @@
在入门指南的快速上手一节,我们已经初步了解如何创建页面对象,本节进一步介绍更多功能。
在入门指南的上手示例一节,我们已经初步了解如何创建页面对象,本节进一步介绍更多功能。
常用的页面对象有 3 种:
@ -49,6 +49,7 @@
这种方式代码最简洁,程序会从配置文件中读取配置,自动生成页面对象。可以保持代码简洁。
在基本概念一节我们提到过,本库使用配置文件记录常用配置信息,也可以直接把配置写在代码里。
?>**Tips**<br>默认配置文件中,程序使用 9222 端口启动浏览器,浏览器路径为 Chrome。如路径中没找到浏览器执行文件Windows 系统下程序会在注册表中查找路径,如果还是没找到,则要用下一种方式手动配置路径。
```python
@ -58,7 +59,7 @@ page = WebPage('d')
# 指定以 s 模式创建页面对象
page = WebPage('s')
# 用 ChroumiumPage 创建页面对象
# 用 ChromiumPage 创建页面对象
page = ChromiumPage()
# 用 SessionPage 创建页面对象

View File

@ -55,7 +55,7 @@
mergeNavbar: true, //小屏设备下合并导航栏到侧边栏
loadSidebar: true,
loadNavbar: true,
coverpage: true,
coverpage: false,
subMaxLevel: 2,
pagination: {
previousText: 'PREVIOUS',

View File

@ -6,10 +6,12 @@
网址:[https://gitee.com/login](https://gitee.com/login)
打开网址,按`F12`,我们可以看到页面元素如下:
打开网址,按`F12`,我们可以看到页面 html 如下:
![](https://gitee.com/g1879/DrissionPage/raw/master/docs/imgs/gitee_1.jpg)
(图片点击放大)
用户名输入框`id``'user_login'`,密码输入框`id``'user_password'`,登录按钮`value``'登 录'`
我们可以用这三个属性定位这三个元素,然后对其输入数据和点击。

View File

@ -8,10 +8,12 @@
这个示例的目标,要获取所有库的名称和链接,为避免对网站造成压力,我们只采集 3 页。
打开网址,按`F12`,我们可以看到页面元素如下:
打开网址,按`F12`,我们可以看到页面 html 如下:
![](https://gitee.com/g1879/DrissionPage/raw/master/docs/imgs/gitee_2.jpg)
(图片点击放大)
从 html 代码中可以看到,所有开源项目的标题都是`class`属性为`'title project-namespace-path'``<a>`元素。我们可以遍历这些`<a>`元素,获取它们的信息。
同时,我们观察到,列表页网址是以页数为参数访问的,如第一页 url 为`https://gitee.com/explore/all?page=1`,页数就是`page`参数。因此我们可以通过修改这个参数访问不同的页面。
@ -40,7 +42,7 @@ for i in range(1, 4):
输出:
```
```console
小熊派开源社区/BearPi-HM_Nano https://gitee.com/bearpi/bearpi-hm_nano
明月心/PaddleSegSharp https://gitee.com/raoyutian/PaddleSegSharp
RockChin/QChatGPT https://gitee.com/RockChin/QChatGPT

View File

@ -1 +1,117 @@
# 施工中。。。
这个示例演示`WebPage`如何切换控制浏览器和收发数据包两种模式。
通常,切换模式是用来应付登录检查很严格的网站,可以用浏览器处理登录,再转换模式用收发数据包的形式来采集数据。
但是这种场景须要有对应的账号,不便于演示。演示使用浏览器在百度搜索,然后转换到收发数据包的模式来读取数据。虽然现实使用意义不大,但可以了解其工作模式。
# ✔️ 页面分析
网址:[https://www.baidu.com](https://www.baidu.com)
打开网址,按`F12`,我们可以看到页面 html 如下:
![](https://gitee.com/g1879/DrissionPage/raw/master/docs/imgs/baidu_1.jpg)
(图片点击放大)
输入框`<input>`元素`id`属性为`'kw'`,“百度一下”按钮`<input>`元素`id`属性为`'su'`
输入关键词搜索后,再查看页面 html
![](https://gitee.com/g1879/DrissionPage/raw/master/docs/imgs/baidu_2.jpg)
(图片点击放大)
通过分析 html 代码,我们可以看出,每个结果的标题都存在于`<h3>`元素里。因此,我们可以获取页面中所有`<h3>`元素,再遍历获取其信息。
# ✔️ 示例代码
您可以直接运行以下代码:
```python
from DrissionPage import WebPage
# 创建页面对象
page = WebPage()
# 访问网址
page.get('https://www.baidu.com')
# 查找文本框元素并输入关键词
page('#kw').input('DrissionPage')
# 点击搜索按钮
page('#su').click(wait_loading=True)
# 切换到收发数据包模式
page.change_mode()
# 获取所有<h3>元素
links = page.eles('tag:h3')
# 遍历获取到的元素
for link in links:
# 打印元素文本
print(link.text)
```
输出:
```console
DrissionPage: 一个整合了selenium和requests_html的模块,...
python采集库DrissionPage- 腾讯云开发者社区-腾讯云
DrissionPage- Web应用开发 - 青少年人工智能资源与创新...
DrissionPage-demos: 使用DrissionPage爬取常见网站的示例。
DrissionPagev1.9.0 已经发布,WEB 自动化测试集成工具_程...
DrissionPage首页、文档和下载 - WEB 自动化测试集成工具 ...
DrissionPage- Gitee
DrissionPage—— Web 自动化测试集成工具 - OSCHINA - ...
DrissionPagev1.10.0 已经发布,WEB 自动化测试集成工具 |...
DrissionPagev2.2.1 发布,WEB 自动化测试集成工具
```
# ✔️ 示例详解
首先,我们导入页面对象`WebPage`类。
```python
from DrissionPage import WebPage
```
接下来,我们创建一个`WebPage`对象。
```python
page = WebPage()
```
然后控制浏览器访问百度。
```python
page.get('https://www.baidu.com')
```
再通过模拟输入的方式输入关键词,模拟点击搜索按钮。
这里查找元素的方法上两个示例已经讲过,不再细说。
`click()`方法里面的`wait_loading`参数用于等待页面进入加载状态,避免操作过快出现异常。
```python
page('#kw').input('DrissionPage')
page('#su').click(wait_loading=True)
```
`change_mode()`方法用于切换工作模式,从当前控制浏览器的模式切换到收发数据包模式。
切换的时候程序会在新模式重新访问当前 url。
```python
page.change_mode()
```
切换后,我们可以用与控制浏览器一致的语法,获取页面元素,这里`eles()`方法是获取页面中所有`<h3>`元素,它返回这些元素对象组成的列表。`tag:`是查找条件,表示查找某种类型的元素。
```python
links = page.eles('tag:h3')
```
最后,我们遍历这些元素,并逐个打印它们包含的文本。
```python
for link in links:
print(link.text)
```