今天向大家推荐一款基于Python的网页自动化工具:DrissionPage。这款工具融合了控制浏览器和收发数据包的功能,集合了WEB浏览器自动化的便利性和requests库的高效率优点。
一、DrissionPage框架产生背景
网页自动化通常有两种形式:
- 直接发送请求数据包到服务器,模拟数据流向操作。
- 控制浏览器与网页进行交互,模拟用户界面操作。
前者轻量快速,但面对需要登录、验证码等情况时门槛较高;后者使用浏览器模拟用户操作,避免了很多困难,但运行效率较低。
DrissionPage的设计初衷就是将两者合而为一,既能够在需要时切换相应模式,又提供了人性化的使用方法,提高了开发和运行效率。
二、DrissionPage框架亮点特色
- 使用全自研的内核,摆脱了对selenium的依赖,运行速度更快。
- 可以同时操作浏览器中的多个标签页,无需切换。
- 内置等待和自动重试功能,使程序更稳定,编写更省心。
- 允许反复使用已经打开的浏览器,调试超方便。
- 极简的语法规则,功能更强大稳定。
- 使用POM模式封装,便于扩展。
三、安装搭建
环境准备:
- 操作系统:Windows、Linux或Mac。
- Python版本:3.6及以上
- 支持浏览器:Chromium内核(如Chrome和Edge)
安装DrissionPage:
<code>pip install DrissionPage</code>
浏览器路径设置
<code>from DrissionPage.easy_set import set_paths set_paths(browser_path=r'您的Chrome浏览器exe文件路径')</code>
四、实战一下
启动浏览器并访问百度:
<code>from DrissionPage import ChromiumPage page = ChromiumPage() page.get('https://www.baidu.com')</code>
与selenium框架代码对比:
<code># 案例一:查找第一个文本包含some text的元素 # 使用selenium element = WebDriverWait(driver).until(ec.presence_of_element_located((By.XPATH, '//*[contains(text(), "some text")]'))) # 使用DrissionPage element = page('some text')</code>
与requests框架代码对比:
<code># 案例一:获取元素内容 url = 'https://baike.baidu.com/item/python' # 使用requests from lxml import etree headers = {'User-Agent':'Mozilla/5.0 (Windows NT 6.3; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2272.118 Safari/537.36'} response = requests.get(url, headers = headers) html = etree.HTML(response.text) element = html.xpath('//h1')[0] title = element.text # 使用DrissionPage page = WebPage('s') page.get(url) title = page('tag:h1').text</code>
五、小结
DrissionPage虽然还存在一些不足之处,但整体来说,设计理念值得借鉴,更多功能等待大家去探索。项目文档地址:
DrissionPage虽然还存在一些不足之处,但整体来说,设计理念值得借鉴,更多功能等待大家去探索。项目文档地址:http://g1879.gitee.io/drissionpagedocs/
© 版权声明
THE END
暂无评论内容