强大的自研内核

本库采用全自研的内核,内置了 N 多实用功能,对常用功能作了整合和优化,对比 selenium,有以下优点:

  • 无 webdriver 特征,不会被网站识别
  • 无需为不同版本的浏览器下载不同的驱动
  • 运行速度更快
  • 可以跨<iframe>查找元素,无需切入切出
  • <iframe>看作普通元素,获取后可直接在其中查找元素,逻辑更清晰
  • 可以同时操作浏览器中的多个标签页,即使标签页为非激活状态,无需切换
  • 可以直接读取浏览器缓存来保存图片,无需用 GUI 点击另存
  • 可以对整个网页截图,包括视口外的部分(90以上版本浏览器支持)
  • 可处理非open状态的 shadow-root

亮点功能

除了以上优点,本库还内置了无数人性化设计。

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

    安装测试

    pip install DrissionPage

    腾讯云源安装:

    pip install -i https://mirrors.cloud.tencent.com/pypi/simple DrissionPage
from DrissionPage import ChromiumPage
# 创建默认的窗口对象
page = ChromiumPage()
page.get('https://blog.oioweb.cn')

大概看了下源码, ChromiumPage默认会根据configs.ini中的配置创建浏览器窗口对象。

创建方法在 DrissionPage\commons\browser.py 文件中。

主要启动命令:chrome.exe --remote-debugging-port=

启动逻辑是给本地的chrome浏览器开启远程调试(可自行配置端口),开启后创建一个窗口对象,后续操作通过websocket连接端口远程调试。

封装集成

DrissionPage除了web自动化操作也封装了 requests、lxml 。


from DrissionPage import SessionPage
page = SessionPage()
page.get('https://blog.oioweb.cn')
print(page.response)
print(page.response.text)
print(page.eles('tag:title')[0].text)

项目地址

Github:
https://github.com/g1879/DrissionPage

Gitee:
https://gitee.com/g1879/DrissionPage

最后修改:2023 年 04 月 22 日
如果觉得我的文章对你有用,请随意赞赏