探索 DrissionPage: 强大的Python网页自动化工具

简介: DrissionPage 是一个基于 Python 的网页自动化工具,结合了浏览器自动化的便利性和 requests 库的高效率。它提供三种页面对象:ChromiumPage、WebPage 和 SessionPage,分别适用于不同的使用场景,帮助开发者高效完成网页自动化任务。

探索 DrissionPage: 强大的Python网页自动化工具

在当今数字化时代,数据的快速获取与处理能力成为了企业和个人成功的关键。在众多自动化工具中,DrissionPage 以其独特的功能和强大的性能脱颖而出,成为了Python开发者的得力助手。本文将深入探讨DrissionPage的核心特性,以及如何利用它来优化网页自动化任务。

简介

DrissionPage是一个基于Python的网页自动化工具,它巧妙地结合了浏览器自动化的便利性和requests库的高效率。这一工具不仅功能强大,还内置了无数人性化设计和便捷功能,使其成为开发者和数据分析师的理想选择。

核心特性

DrissionPage提供了三种主要的页面对象:ChromiumPage、WebPage和SessionPage,每种对象都针对特定的使用场景进行了优化。

  1. ChromiumPage:这个页面对象专注于直接操作浏览器,适合需要与页面进行交互的场景,如点击、输入文本和执行JavaScript脚本等。尽管功能强大,但ChromiumPage的性能受限于浏览器,可能在运行速度和内存占用上不如其他两种页面对象。

  2. WebPage:这是一个综合性的页面对象,它整合了浏览器控制和数据包的收发功能。WebPage支持两种模式:d模式用于浏览器操作,而s模式则专注于数据包的处理。d模式功能强大,但运行速度较慢;s模式则速度更快,适合在数据包较简单的情况下使用。

  3. SessionPage:这是一个轻量级的页面对象,专门用于发送和接收数据包,适合不需要页面交互的爬取任务。SessionPage的高效性能使其成为处理大规模数据爬取的理想选择。

使用示例

DrissionPage的使用非常直观,以下是一些基本的操作示例:

  • 操控浏览器:使用ChromiumPage对象,可以轻松实现浏览器的自动化操作,如登录、填写表单等。

    from DrissionPage import ChromiumPage
    
    page = ChromiumPage()
    page.get('https://gitee.com/login')
    ele = page.ele('#user_login')
    ele.input('您的账号')
    page.ele('#user_password').input('您的密码')
    page.ele('@value=登 录').click()
    
  • 爬取数据:使用SessionPage对象,可以高效地进行数据爬取,无需与页面进行复杂的交互。

    from DrissionPage import SessionPage
    
    page = SessionPage()
    for i in range(1, 4):
        page.get(f'https://gitee.com/explore/all?page={i}')
        links = page.eles('.title project-namespace-path')
        for link in links:
            print(link.text, link.link)
    
  • 页面分析:使用WebPage对象,可以在浏览器和数据包模式之间灵活切换,以适应不同的分析需求。

    from DrissionPage import WebPage
    
    page = WebPage()
    page.get('https://gitee.com/explore/all')
    page.change_mode()
    items = page.ele('.ui relaxed divided items explore-repo__list').eles('.item')
    for item in items:
        print(item('t:h3').text)
        print(item('.project-desc mb-1').text)
    
学习笔记
# DrissionPage 是一个基于 python 的网页自动化工具。  DrissionPage官方的文档:https://www.drissionpage.cn/
# 可兼顾浏览器自动化的便利性和 requests 的高效率。它功能强大,内置无数人性化设计和便捷功能。它的语法简洁而优雅,代码量少,对新手友好。

# page = SessionPage() / WebPage() / ChromiumPage()
#   ChromiumPage:单纯用于操作浏览器的页面对象  登录
#   WebPage:整合浏览器控制和收发数据包于一体的页面对象  页面分析  d 模式和 s 模式
#             d 模式用于控制浏览器,不仅可以读取浏览器获取到的信息,还能对页面进行操作,如点击、填写、开关标签页、改变元素属性、执行 js 脚本等等。
#             d 模式功能强大,但运行速度受浏览器制约非常缓慢,而且需要占用大量内存。
#             s 模式的运行速度比 d 模式快几个数量级,但只能基于数据包进行读取或发送,不能对页面进行操作,不能运行 js。
#             爬取数据时,如网站数据包较为简单,应首选 s 模式。
#   SessionPage:单纯用于收发数据包的页面对象  爬取  不会跳出

# page.change_mode()  切换到收发数据包模式 切换的时候程序会在新模式重新访问当前 url  有验证码和页面数据由 js 产生先d后s

# page.get(f'url')  跳转url
# page.ele('a***')  # 定位元素
# #表示按id属性查找元素 @表示按属性名查找 .表示按class属性查找元素  t:字的大小,例如t:h3 tag:a 获取其子元素中所有 a 元素
# ele.input('您的密码')  # 输入文本
# ele.click()  # 点击元素
# page.eles('t:button@tx():')  搜索表示选择一个类型为按钮的元素,且其文本内容为搜索
# page.s_eles 更快的获取元素
# s_eles()与eles()的区别在于前者会把整个页面或动态元素转变成一个静态元素,再在其中获取下级元素或信息。因为静态元素是纯文本的,没有各种属性、交互等消耗资源的部分,所以运行速度非常快。
# ele.next()  # 获取后一个元素
# ele.prev(index=2)  # 获取前面第二个元素
# page.quit() 关闭

# from TimePinner import Pinner  # 导入计时工具
# pinner = Pinner()  # 创建计时器对象
# pinner.pin()  # 标记开始记录
# pinner.pin('用时')  # 记录并打印时间

from DrissionPage import ChromiumPage

# ##操控浏览器
#
# 导入库
# from DrissionPage import ChromiumPage
#
# # 创建页面对象,并启动或接管浏览器
# page = ChromiumPage()
# # 跳转到登录页面
# page.get('https://gitee.com/login')
#
# # 定位到账号文本框,获取文本框元素
# ele = page.ele('#user_login')   # #表示按id属性查找元素
# # 输入对文本框输入账号
# ele.input('您的账号')
# # 定位到密码文本框并输入密码
# page.ele('#user_password').input('您的密码')
# # 点击登录按钮
# page.ele('@value=登 录').click()  # @表示按属性名查找
#
#
# ## 爬取
# # 收发数据包
#
# from DrissionPage import SessionPage
#
# # 创建页面对象
# page = SessionPage()
#
# # 爬取3页
# for i in range(1, 4):
#     # 访问某一页的网页
#     page.get(f'https://gitee.com/explore/all?page={i}')
#     # 获取所有开源库<a>元素列表
#     links = page.eles('.title project-namespace-path')
#     # 遍历所有<a>元素
#     for link in links:
#         # 打印链接信息
#         print(link.text, link.link)
#
# # 页面分析
#
# from DrissionPage import WebPage
#
# # 创建页面对象
# page = WebPage()
# # 访问网址
# page.get('https://gitee.com/explore/all')
# # 切换到收发数据包模式
# page.change_mode()
# # 获取所有行元素
# items = page.ele('.ui relaxed divided items explore-repo__list').eles('.item')
# # 遍历获取到的元素
# for item in items:
#     # 打印元素文本
#     print(item('t:h3').text)
#     print(item('.project-desc mb-1').text)
#     print()

结论

DrissionPage是一个功能全面、性能卓越的网页自动化工具,它通过提供灵活的页面对象和强大的功能,使得开发者能够轻松应对各种网页自动化任务。无论是复杂的浏览器交互还是大规模的数据爬取,DrissionPage都能提供高效的解决方案。随着技术的不断进步,DrissionPage有望成为更多开发者的首选工具。

目录
相关文章
|
4天前
|
测试技术 数据库 Python
Python装饰器实战:打造高效性能计时工具
在数据分析中,处理大规模数据时,分析代码性能至关重要。本文介绍如何使用Python装饰器实现性能计时工具,在不改变现有代码的基础上,方便快速地测试函数执行时间。该方法具有侵入性小、复用性强、灵活度高等优点,有助于快速发现性能瓶颈并优化代码。通过设置循环次数参数,可以更准确地评估函数的平均执行时间,提升开发效率。
80 61
Python装饰器实战:打造高效性能计时工具
|
23天前
|
Python
自动化微信朋友圈:Python脚本实现自动发布动态
本文介绍如何使用Python脚本自动化发布微信朋友圈动态,节省手动输入的时间。主要依赖`pyautogui`、`time`、`pyperclip`等库,通过模拟鼠标和键盘操作实现自动发布。代码涵盖打开微信、定位朋友圈、准备输入框、模拟打字等功能。虽然该方法能提高效率,但需注意可能违反微信使用条款,存在风险。定期更新脚本以适应微信界面变化也很重要。
141 61
|
9天前
|
数据可视化 算法 数据挖掘
Python时间序列分析工具Aeon使用指南
**Aeon** 是一个遵循 scikit-learn API 风格的开源 Python 库,专注于时间序列处理。它提供了分类、回归、聚类、预测建模和数据预处理等功能模块,支持多种算法和自定义距离度量。Aeon 活跃开发并持续更新至2024年,与 pandas 1.4.0 版本兼容,内置可视化工具,适合数据探索和基础分析任务。尽管在高级功能和性能优化方面有提升空间,但其简洁的 API 和完整的基础功能使其成为时间序列分析的有效工具。
60 37
Python时间序列分析工具Aeon使用指南
|
5天前
|
机器学习/深度学习 运维 数据可视化
Python时间序列分析:使用TSFresh进行自动化特征提取
TSFresh 是一个专门用于时间序列数据特征自动提取的框架,支持分类、回归和异常检测等机器学习任务。它通过自动化特征工程流程,处理数百个统计特征(如均值、方差、自相关性等),并通过假设检验筛选显著特征,提升分析效率。TSFresh 支持单变量和多变量时间序列数据,能够与 scikit-learn 等库无缝集成,适用于大规模时间序列数据的特征提取与模型训练。其工作流程包括数据格式转换、特征提取和选择,并提供可视化工具帮助理解特征分布及与目标变量的关系。
44 16
Python时间序列分析:使用TSFresh进行自动化特征提取
|
6天前
|
弹性计算 运维 监控
自动化AutoTalk第十一期-应知必会的自动化工具之阿里云配额中心
本次分享主题为“应知必会的自动化工具之阿里云配额中心”,课程围绕三个方面展开:1) 认识配额及其作用;2) 配额管理的意义与方法;3) 阿里云配额中心的功能和使用场景。通过学习,了解如何有效管理和监控配额,避免资源限制影响业务,并实现自动化集成,提升运维效率。
31 10
|
6天前
|
JavaScript Java 开发工具
AutoTalk第十三期-应知必会的自动化工具-阿里云SDK支持策略(一)
AutoTalk第十三期探讨阿里云SDK支持策略,涵盖四大方面:发布策略、版本规范、更新策略及停止支持策略。重点介绍SDK的及时性、完整性、测试覆盖度和版本命名规范;并以Python部分语言版本停止支持为案例,帮助开发者了解维护策略,确保平稳过渡到新版本。
|
7天前
|
算法 安全 Java
自动化AutoTalk第十期:应知必会的自动化工具-阿里云SDK
本期《自动化AutoTalk》第十期聚焦应知必会的自动化工具——阿里云SDK。主要内容分为三部分:1. 阿里云SDK概述,介绍其支持的300多款云产品和8种主流编程语言;2. 快速生成SDK示例,以Java语言为例展示如何通过OpenAPI门户快速生成并下载SDK工程;3. 进阶特性介绍,涵盖签名算法、Endpoint配置、代理设置、HTTPS请求配置、超时机制及异常处理等重要功能。通过这些内容,帮助开发者更高效、安全地使用阿里云SDK。
|
15天前
|
存储 算法 Serverless
剖析文件共享工具背后的Python哈希表算法奥秘
在数字化时代,文件共享工具不可或缺。哈希表算法通过将文件名或哈希值映射到存储位置,实现快速检索与高效管理。Python中的哈希表可用于创建简易文件索引,支持快速插入和查找文件路径。哈希表不仅提升了文件定位速度,还优化了存储管理和多节点数据一致性,确保文件共享工具高效运行,满足多用户并发需求,推动文件共享领域向更高效、便捷的方向发展。
|
15天前
|
存储 安全 数据可视化
用Python实现简单的任务自动化
本文介绍如何使用Python实现任务自动化,提高效率和准确性。通过三个实用案例展示:1. 使用`smtplib`和`schedule`库自动发送邮件提醒;2. 利用`shutil`和`os`库自动备份文件;3. 借助`requests`库自动下载网页内容。每个案例包含详细代码和解释,并附带注意事项。掌握这些技能有助于个人和企业优化流程、节约成本。
48 3

热门文章

最新文章