mirror of
https://gitee.com/g1879/DrissionPage.git
synced 2024-12-10 04:00:23 +08:00
更新文档
This commit is contained in:
parent
8b6ff263cd
commit
cf3959ddab
@ -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):
|
||||
|
@ -58,14 +58,23 @@ DrissionPage 是一个基于 python 的网页自动化工具。
|
||||
除了以上优点,本库还内置了无数人性化设计。
|
||||
|
||||
- 极简的语法规则。集成大量常用功能,代码更优雅
|
||||
|
||||
- 定位元素更加容易,功能更强大稳定
|
||||
|
||||
- 无处不在的等待和自动重试功能。使不稳定的网络变得易于控制,程序更稳定,编写更省心
|
||||
|
||||
- 提供强大的下载工具。操作浏览器时也能享受快捷可靠的下载功能
|
||||
|
||||
- 允许反复使用已经打开的浏览器。无须每次运行从头启动浏览器,调试超方便
|
||||
|
||||
- 使用 ini 文件保存常用配置,自动调用,提供便捷的设置,远离繁杂的配置项
|
||||
|
||||
- 内置 lxml 作为解析引擎,解析速度成几个数量级提升
|
||||
|
||||
- 使用 POM 模式封装,可直接用于测试,便于扩展
|
||||
|
||||
- 高度集成的便利功能,从每个细节中体现
|
||||
|
||||
- 还有很多细节,这里不一一列举,欢迎实际使用中体验:)
|
||||
|
||||
# 🌟 简单演示
|
||||
|
@ -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
|
||||
|
||||
# 🖐🏻 免责声明
|
||||
|
||||
|
@ -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 创建页面对象
|
||||
|
@ -55,7 +55,7 @@
|
||||
mergeNavbar: true, //小屏设备下合并导航栏到侧边栏
|
||||
loadSidebar: true,
|
||||
loadNavbar: true,
|
||||
coverpage: true,
|
||||
coverpage: false,
|
||||
subMaxLevel: 2,
|
||||
pagination: {
|
||||
previousText: 'PREVIOUS',
|
||||
|
@ -6,10 +6,12 @@
|
||||
|
||||
网址:[https://gitee.com/login](https://gitee.com/login)
|
||||
|
||||
打开网址,按`F12`,我们可以看到页面元素如下:
|
||||
打开网址,按`F12`,我们可以看到页面 html 如下:
|
||||
|
||||

|
||||
|
||||
(图片点击放大)
|
||||
|
||||
用户名输入框`id`为`'user_login'`,密码输入框`id`为`'user_password'`,登录按钮`value`为`'登 录'`。
|
||||
|
||||
我们可以用这三个属性定位这三个元素,然后对其输入数据和点击。
|
||||
|
@ -8,10 +8,12 @@
|
||||
|
||||
这个示例的目标,要获取所有库的名称和链接,为避免对网站造成压力,我们只采集 3 页。
|
||||
|
||||
打开网址,按`F12`,我们可以看到页面元素如下:
|
||||
打开网址,按`F12`,我们可以看到页面 html 如下:
|
||||
|
||||

|
||||
|
||||
(图片点击放大)
|
||||
|
||||
从 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
|
||||
|
@ -1 +1,117 @@
|
||||
# 施工中。。。
|
||||
这个示例演示`WebPage`如何切换控制浏览器和收发数据包两种模式。
|
||||
|
||||
通常,切换模式是用来应付登录检查很严格的网站,可以用浏览器处理登录,再转换模式用收发数据包的形式来采集数据。
|
||||
|
||||
但是这种场景须要有对应的账号,不便于演示。演示使用浏览器在百度搜索,然后转换到收发数据包的模式来读取数据。虽然现实使用意义不大,但可以了解其工作模式。
|
||||
|
||||
# ✔️ 页面分析
|
||||
|
||||
网址:[https://www.baidu.com](https://www.baidu.com)
|
||||
|
||||
打开网址,按`F12`,我们可以看到页面 html 如下:
|
||||
|
||||

|
||||
|
||||
(图片点击放大)
|
||||
|
||||
输入框`<input>`元素`id`属性为`'kw'`,“百度一下”按钮`<input>`元素`id`属性为`'su'`。
|
||||
|
||||
输入关键词搜索后,再查看页面 html:
|
||||
|
||||

|
||||
|
||||
(图片点击放大)
|
||||
|
||||
通过分析 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)
|
||||
```
|
||||
|
Loading…
x
Reference in New Issue
Block a user