DrissionPage SessionPage模式 API介绍 使用笔记(三)

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

目录

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

启动

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

from DrissionPage import SessionPage

# session_or_options: Session对象或SessionOptions对象
# timeout: 超时时间(秒)
obj = SessionPage(session_or_options=None, timeout=None)

驱动启动配置

你可能需要配置一些启动参数,则可是使用下面的方法,更多信息见这里配置文件ini信息见这里

from DrissionPage import SessionPage,SessionOptions

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

# 举例 一些快捷方式
option.set_headers = {'user-agent': 'Mozilla/5.0 (Macint...', 'connection': 'keep-alive' ...}  # 请求头
option.set_a_header('accept', 'text/html')  # 单独添加请求头中某一项
option.remove_a_header('accept')  # 删除请求头中某一项
option.clear_headers()  # 清除

option.set_proxies('http://localhost:1080')  # 设置代理

# 可为Cookie, CookieJar, list, tuple, str, dict,传入None可在ini文件标记删除
option.set_cookies(['key1=val1; domain=****', 'key2=val2; domain=****'])  # 多段 cookie,用列表分隔

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


常用方法

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

1.页面

由于 SessionPage模式,本质是封装 Requests所以,方法也一样,包括 get()、post()、head()、options()、put() 、patch()、delete()等

# 重点说明 get 与 post 因为这两个方法做了单独的封装

# url: 目标url,可指定本地文件路径
# show_errmsg: 是否显示和抛出异常
# retry: 重试次数,为None时使用页面对象retry_times属性值
# interval: 重试间隔(秒),为None时使用页面对象retry_interval属性值
# timeout: 连接超时时间(秒),为None时使用页面对象timeout属性值
# kwargs: 其他连接参数,参考 requests 参数
obj.get(url, show_errmsg=False, retry=None, interval=None, timeout=None, **kwargs)

# url: 目标url
# show_errmsg: 是否显示和抛出异常
# retry: 重试次数,为None时使用页面对象retry_times属性值
# interval: 重试间隔(秒),为None时使用页面对象timeout属性值
# kwargs: 其他连接参数,参考 requests 参数
obj.post(url, show_errmsg=False, retry=None, interval=None, **kwargs)

2.元素定位 更多API见这里

针对响应结果是 HTML 的情况,这种情况因为 HTML 已经被获取到本地,所以建议使用 s_eles_eles 方法,这两个处理静态的更快
定位方式与语法,同ChromiumPage模式,这里不再赘述,可看这里

obj.s_ele(locator=None, index=1)  # 返回单个,多个符合时,默认返回第1个
obj.s_eles(locator)  # 返回匹配的全部元素

# 注意
# 页面对象和元素对象的 s_ele() 方法不能搜索到在 <iframe> 里的元素,页面对象的静态版本也不能搜索 <iframe> 里的元素。
# 要使用 <iframe> 里元素的静态版本,可先获取该元素,再转换。而使用 ChromiumFrame 对象,则可以直接用 s_ele() 查找元素

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

HTML下 解析(获取)元素信息, 若响应为 JSON,则直接使用 Python 处理 JSON 的方式即可

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-07-02 10:22  星尘的博客  阅读(407)  评论(0编辑  收藏  举报