熟悉的小伙伴知道我的工作有相当一部分是自动化,在探索相关的技术上一直没停下脚步,我痛恨selenium、playwright的非标准内核机制,也曾对clicknium引进了新的问题无语,以及接口爬取数据时踩不完的坑,无论是b端还是c端还是接口的探索到了瓶颈仿佛山穷水尽,直到我遇到了它——DrissionPage

DrissionPage亮点

  drissionpage的亮点在其代码库里介绍了一大堆,有喜欢的朋友可以自行查看:https://toscode.gitee.com/g1879/DrissionPage。

  下面我只谈谈我喜欢的亮点。

  • 注释全中文,很详细。有很多国人的包开发完写的英文,对于通篇中文注释的我反手就是一个赞。

  • 无需 chromedriver。你知道这意味着什么吗,再也不用担心针对driver的反爬了,真的开心。
  • 兼顾浏览器自动化的便利性和 requests 的高效率。是的,它整合了requests。
  • 语法便利。真的厌倦了对selenium的各种罗里吧嗦的封装,而它可以跨<iframe>查找元素,无需切入切出。可同时操作多个tab 标签页,无需切换。
  • 更快的运行速度。

安装配置

  • 安装

    • pip 安装即可  

      pip install DrissionPage
  • 配置

    • 在命令行调出python,输入如下代码即可,记得浏览器路径设置为自己的。  

      from DrissionPage.easy_set import set_paths
      set_paths(browser_path=r'C:\Program Files\Google\Chrome\Application\chrome.exe')
  • 运行时关闭当前浏览器

UI自动化脚本举例

  登录vivo创作者中心。

import time
from DrissionPage import ChromiumPage # from DrissionPage.easy_set import set_paths # set_paths(browser_path=r'C:\Program Files\Google\Chrome\Application\chrome.exe') page = ChromiumPage()
page.get('https://designer.vivo.com.cn/#/login')
ele = page.ele("@placeholder=支持邮箱/用户名登录").input('yourname')
page.ele('@placeholder=请输入密码').input("yourpassword")
page.ele("登录").click()
time.sleep(1000)

  收发数据包,比如爬取某个网站的信息,结果获取到了。

  混合模式。百度搜索例子演示两种模式切换。

from DrissionPage import WebPage

# d: 操作浏览器模式
page = WebPage('d')
page.get('http://www.baidu.com')
page.ele('#kw').input('DrissionPage')
page.ele('@value=百度一下').click(wait_loading=True) # 切换到s模式: 收发包模式
page.change_mode()
results = page.eles('tag:h3')
for result in results:
print(result.text)

更多例子和 API 请阅读官方文档,在此就不再演示。

总结

  这个库设计初衷,是将web和api合而为一。

  绕过了很多的爬虫中遇到的坑。

  自研内核。

  无数人性化设计。

  喜欢的朋友可以看看作者的仓库,真的是干货满满:https://toscode.gitee.com/g1879/DrissionPage

最新文章

  1. 无限分级和tree结构数据增删改【提供Demo下载】
  2. 【开源】SoDiaoEditor 可能是目前最好用的开源电子病历编辑器(B/S架构)
  3. http get post
  4. The big deffrence between ($(du * )) and $(du *)
  5. mongo操作
  6. C# 调用配置文件SQL语句 真2B!
  7. cmd 命令收集
  8. Android String format 通过value 下的string.xml 文件
  9. 一个开源音乐播放器,低仿QQ音乐!
  10. Oracle、DB2、SQLSERVER、Mysql、Access分页SQL语句梳理
  11. 平衡搜索树(一) AVL树
  12. postgres常用操作
  13. BZOJ 3038 上帝造题的七分钟2 (并查集+树状数组)
  14. [leetcode-500-Keyboard Row]
  15. A Reliability-Aware Network Service Chain Provisioning With Delay Guarantees in NFV-Enabled Enterprise Datacenter Networks
  16. Windows10上使用Linux子系统(WSL)
  17. iOS实现pdf文件预览,上下翻页、缩放,读取pdf目录
  18. DataGrid表格某单元格数据填入是否正确的验证---MiniUI使用
  19. Swift 里 Set(五)Adding & Removing Elements
  20. Linux共享库LD_LIBRARY_PATH与ld.so.conf

热门文章

  1. [HNCTF]Web详解_原创
  2. Zabbix与乐维监控对比分析(一)——架构、性能篇
  3. 【Java EE】Day08 HTML&amp;CSS
  4. 彻底理解Python中的闭包和装饰器(下)
  5. 《HTTP权威指南》– 16.重定向与负载均衡
  6. jQuery中each与data
  7. 为什么总是应该考虑给定 List 的初始大小
  8. Python函数/动态参数/关键字参数
  9. [编程基础] Python日志记录库logging总结
  10. Docker搭建Cloudreve网盘