自动化(爬虫)工具 DrissionPage SessionPage 模式 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_ele
与 s_eles
方法,这两个处理静态的更快
obj.s_ele(locator=None, index=1) # 返回单个,多个符合时,默认返回第1个
obj.s_eles(locator) # 返回匹配的全部元素
# 注意
# 页面对象和元素对象的 s_ele() 方法不能搜索到在 <iframe> 里的元素,页面对象的静态版本也不能搜索 <iframe> 里的元素。
# 要使用 <iframe> 里元素的静态版本,可先获取该元素,再转换。而使用 ChromiumFrame 对象,则可以直接用 s_ele() 查找元素
定位方式与语法,同ChromiumPage
模式,这里不再赘述,可看这里
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主页