DrissionPage ChromiumPage 模式 API介绍 使用笔记(二)

自动化(爬虫)工具 DrissionPage ChromiumPage 模式 API介绍 使用笔记(二)

目录

  1. 启动
  2. 驱动启动配置
  3. 常用方法(API)

启动

最简单的启动方式,更多启动方式见这里

from DrissionPage import ChromiumPage

# addr_or_opts: 浏览器地址:端口、ChromiumOptions对象或端口数字(int)
# tab_id: 要控制的标签页id,不指定默认为激活的
# timeout: 超时时间(秒)
obj = ChromiumPage(addr_or_opts=None, tab_id=None, timeout=None)

驱动启动配置

你可能需要自己定义浏览器启动选项,则可是使用下面的方法,更多信息见这里配置文件ini信息见这里


from DrissionPage import ChromiumPage,ChromiumOptions

# option = ChromiumOptions()  # 默认从 ini 文件中读取配置信息
option = ChromiumOptions(ini_path='config.ini')  # # 自定义配置文件

# 举例 一些快捷方式
option.set_browser_path(r'D:\chrome.exe')  # 指定浏览器启动
option.incognito()  # 匿名模式
option.headless()  # 无头模式
option.set_argument('--start-maximized')  # 启动时最大化
option.set_argument('--window-size', '800,600')  # 自定义启动窗口大小
option.set_argument('--no-sandbox')  # 无沙盒模式

obj = ChromiumPage(addr_or_opts=option)  # 加载自定义配置启动

常用方法

以下列出常用的 API,更多API见这里,注意obj代表实例化对象

1.页面

obj.get(url, show_errmsg=False, retry=None, interval=None, timeout=None)  # 打开页面
obj.cookies(as_dict=False, all_domains=False, all_info=False)  # 获取cookies
obj.back(steps=1)  # 页面后退
obj.refresh(ignore_cache=False)  # 页面刷新
obj.title  # 当前页面 title
obj.url  # 当前页面 url

2.元素定位

注意这与常规使用 css selectxpath 并不完全相同,更多API见这里

# 通用元素定位
# locator: 定位符或元素对象
# index: 获取第几个元素,从1开始,可传入负数获取倒数第几个
# timeout: 查找超时时间(秒)
obj.ele(locator, index=1, timeout=None)  # 返回单个,多个符合是,默认返回第1个
obj.eles(locator, index=1, timeout=None)  # 返回匹配的全部元素

# = 表示精确匹配
# :表示模糊匹配
# ^ 表示匹配开头
# $ 表示匹配结尾

# xpath 定位,增加 xpath 前缀。 : 与 = 意义相同,不支持 ^ 与 $
obj.ele('xpath://div[@class="controller a-support-common"]')

举例

# 举例 单个条件值匹配
obj.ele('@id=one')  # 获取第1个id=one的元素 等同于 obj.ele('#=one')
obj.ele('@tag()=div')  # 获取第1个 div 标签元素
obj.ele('@text()=文本')  # 获取第1个 text="文本" 的元素 等同于 obj.ele('text=文本')
obj.ele('@class=content-box') # 获取第1个 class=content-box 的元素 等同于 obj.ele('.content-box')

# 举例 多个条件值匹配(@@且)
obj.ele('@@class=content-box@@text()=文本')  # 获取 class=content-box 且 text=文本 的元素
obj.ele('@@class=controller a-support-common@@text()=文本')  # 获取 class=controller a-support-common 且 text=文本 的元素

# 举例 多个条件值匹配(@|或)
obj.eles('@|id=row1@|id=row2') # 查找所有 id=row1 或 id=row2 的元素

# 举例 多个条件值匹配(@!非)
obj.eles('@!class=content-box')  # 获取 class!=content-box 的所有元素
obj.eles('@!class=content-box@@class=content-box clearfix')  # 获取 class!=content-box 且 class=content-box clearfix 的所有元素

# 举例 标签定位 增加 tag 前缀。 : 与 = 意义相同,不支持 ^ 与 $
obj.ele('tag:div')  # 查找第1个 div 元素
obj.ele('tag:div@class=content-box')  # 查找第1个 div 标签 且 class=content-box
obj.ele('tag:div@@class=content-box@@text()=文本')  # 查找第1个 div 标签 且 class=content-box 且 text=文本 的元素

Selenium 元素定位兼容

from DrissionPage.common import By

# 举例
obj.ele((By.ID, 'one'))
obj.ele((By.XPTH, '//div[@class="controller a-support-common"]'))

3.基于某个元素的相对定位,更多API见这里

base = obj.ele('.content-box')

# 获取 父 元素
base.parent(level_or_loc=1, index=1)

# 获取直接子节点
base.child(locator='', index=1, timeout=None, ele_only=True)
base.children(locator='', index=1, timeout=None, ele_only=True) # 符合条件的直接子节点组成的列表

# 获取后面的同级节点
base.next(locator='', index=1, timeout=None, ele_only=True)
base.nexts(locator='', index=1, timeout=None, ele_only=True)  # 符合条件的同级节点组成的列表

# 获取前面的同级节点
base.prev(locator='', index=1, timeout=None, ele_only=True)
base.prevs(locator='', index=1, timeout=None, ele_only=True)  # 全部符合条件的同级节点组成的列表

4. 元素等待, 更多API见这里

obj.wait(second, scope=None)  # 等待若干秒
obj.wait.eles_loaded(locators, timeout=None, any_one=False, raise_err=None)  # 等待元素被加载到 DOM
obj.wait.ele_displayed(loc_or_ele, timeout=None, raise_err=None)  # 等待一个元素变成显示状态
obj.wait.ele_hidden(loc_or_ele, timeout=None, raise_err=None)  # 等待一个元素变成隐藏状态
obj.wait.ele_deleted(loc_or_ele, timeout=None, raise_err=None)  # 等待一个元素被从 DOM 中删除
obj.wait.download_begin(timeout=None, cancel_it=False)  # 等待下载开始
obj.wait.alert_closed()  # 等待弹出框被关闭

5. 解析(获取)元素信息, 更多API见这里

base = obj.ele('.content-box')

base.text  # 返回元素内所有文本组合成的字符串, 已去除多余换行符
base.raw_text  # 返回元素内原始文本
base.texts(text_node_only=False)  # 返回元素内所有直接子节点的文本,包括元素和文本节点
base.attrs  # 以字典形式返回元素所有属性及值
base.attr('name')  # 返回元素某个 attribute 属性值
base.value # 返回元素的value值
base.link # 返回元素的 href 属性或 src 属性

DrissionPage 官方文档
本文章的原文地址
GitHub主页

posted @ 2024-06-27 14:56  星尘的博客  阅读(595)  评论(0编辑  收藏  举报