Python中的DrissionPage详解
文章目录
- Python中的DrissionPage详解
- 一、引言
- 二、DrissionPage的基本使用
- 1、安装与启动
- 2、元素定位与操作
- 三、高级功能
- 1、截图功能
- 2、数据提取
- 3、与其他库的集成
- 四、具体使用示例
- 五、总结
Python中的DrissionPage详解
一、引言
DrissionPage是一个强大的Python库,它集成了Selenium和Requests的功能,使得开发者可以在浏览器自动化和数据抓取之间无缝切换。这个库的设计哲学是提高开发者在Web自动化任务中的工作效率,同时降低编码复杂度。
二、DrissionPage的基本使用
1、安装与启动
首先,我们需要安装DrissionPage库。可以通过pip进行安装:
pip install DrissionPage
安装完成后,我们可以创建一个DrissionPage实例来启动网页操作。以下是一个简单的例子,展示如何初始化DrissionPage实例并启动浏览器:
from drission import Drission
from drission.page import Page# 初始化浏览器,使用 Selenium 模式
drission = Drission(browser='chrome')
# 创建页面实例
page = Page(drission)
# 打开一个网页
page.get('https://example.com')
2、元素定位与操作
DrissionPage提供了非常方便的API来定位和操作页面元素。可以通过元素的id、class、标签名、xpath等方式进行定位。例如,查找一个输入框并填写内容:
# 查找元素并输入文本
input_element = page.element('#username')
input_element.send_keys('my_username')
再比如,点击一个按钮:
# 点击按钮
button = page.element('.submit-button')
button.click()
三、高级功能
1、截图功能
截图是自动化测试中常用的功能,DrissionPage提供了截图的方法,可以轻松获取网页的屏幕截图。
# 截取网页截图
page.screenshot('screenshot.png')
2、数据提取
DrissionPage也支持从页面中提取数据,例如获取页面元素的文本内容,或者获取属性。
# 获取元素的文本内容
element_text = page.element('.headline').text
print(element_text)# 获取链接的href属性
link = page.element('.link')
href = link.get_attribute('href')
print(href)
3、与其他库的集成
DrissionPage可以与其他库(如BeautifulSoup、pandas等)结合使用,来进行更复杂的网页数据提取和处理。例如,使用BeautifulSoup解析页面的HTML结构:
from bs4 import BeautifulSoup# 获取页面源码
html_content = page.content
# 使用 BeautifulSoup 解析
soup = BeautifulSoup(html_content, 'html.parser')
title = soup.title.text
print(title)
四、具体使用示例
假设我们需要从一个电子商务网站抓取商品信息,并且需要登录后才能访问到这些信息。以下是使用DrissionPage完成这个任务的示例代码:
from drission_page import DrissionPage# 初始化DrissionPage
drission = DrissionPage()# 登录网站
drission.get('https://www.example.com/login')
username = drission.ele('id', 'username')
password = drission.ele('id', 'password')
username.send_keys('your_username')
password.send_keys('your_password')
drission.ele('css selector', '.login-button').click()# 等待页面跳转
drission.wait_for_page_loaded()# 访问商品页面
drission.get('https://www.example.com/products')# 提取商品信息
products = drission.ele('css selector', '.product-list').ele_list('css selector', '.product-item')
for product in products:name = product.ele('css selector', '.product-name').textprice = product.ele('css selector', '.product-price').textprint(f'Product Name: {name}, Price: {price}')# 关闭浏览器
drission.quit()
这个示例展示了如何使用DrissionPage登录网站、等待页面加载、访问特定页面并提取商品信息。通过这个库,我们可以轻松地完成这些任务,而不需要深入了解Selenium或Requests的复杂性。
五、总结
DrissionPage是一个创新的Python库,它巧妙地融合了driver和session的功能,为Web自动化操作提供了强大的支持。尤其在处理需要登录的网站爬虫任务时,DrissionPage简化了原本复杂的流程,无需深入分析网络数据包或JavaScript代码,开发者可以通过简洁的代码实现自动化的登录过程。这不仅提高了开发效率,还降低了出错的可能性。
版权声明:本博客内容为原创,转载请保留原文链接及作者信息。
参考文章:
- DrissionPage官方文档
- CSDN博客 - 【DrissionPage】入门指南及查找元素
- CSDN博客 - 【python】使用 DrissionPage 库进行网页自动化操作和数据提取
相关文章:
Python中的DrissionPage详解
文章目录 Python中的DrissionPage详解一、引言二、DrissionPage的基本使用1、安装与启动2、元素定位与操作 三、高级功能1、截图功能2、数据提取3、与其他库的集成 四、具体使用示例五、总结 Python中的DrissionPage详解 一、引言 DrissionPage是一个强大的Python库ÿ…...
python除了熟悉的pandas,openpyxl库也很方便的支持编辑Excel表
excel表格是大家经常用到的文件格式,各行各业都会跟它打交道。之前文章我们介绍了使用openpyxl和xlrd库读取excel表数据,使用xlwt库创建和编辑excel表,在办公自动化方面可以方便我们快速处理数据,帮助我们提升效率。 python之open…...
go语言怎么实现bash cmd里的mv功能?
在Go语言中实现类似于Bash命令行中的mv命令的功能,主要是通过文件系统的操作来完成的。mv命令可以用来移动文件或目录,也可以用来重命名文件或目录。在Go语言中,可以使用标准库中的os和io/ioutil包来实现这些功能。 以下是一个简单的例子&…...
Vue前端面试进阶(五)
使用Element UI开发的实际项目 在实际项目中,我使用Element UI来快速构建用户界面。Element UI是一套为开发者、设计师和产品经理准备的基于Vue 2.0的桌面端组件库,它提供了丰富的UI组件,极大地提高了开发效率。然而,在使用过程中…...
面试手撕题积累
1、实现滑动窗口限流,允许每分钟最多有100个请求 阿里一面题。 核心: 时间窗口管理:滑动窗口会根据时间流逝不断更新,需要记录请求的时间戳,并根据当前时间计算窗口内的请求数量。 限流判断:每次请求到来…...
notepad++文件github下载
1、github下载网址:Releases notepad-plus-plus/notepad-plus-plus GitHub 2、找到操作系统支持的软件: 3、CSDN下载链接:https://download.csdn.net/download/u013083576/90046203...
.NET新知识点笔记
using 用法介绍 using (SqlCommand cmd new SqlCommand(SQLString, connection)) 为什么使用上面的using 而不直接使用下述的来直接 SqlCommand cmd new SqlCommand(SQLString, connection)如果你需要使用一个对象,这个对象需要占用很多紧缺的资源&am…...
数据结构:链表进阶
链表进阶 1. ArrayList的缺陷2. 链表2.1 链表的概念及结构2.2 链表的实现 3.链表面试题4.LinkedList的使用5.1 什么是LinkedList4.2 LinkedList的使用 5. ArrayList和LinkedList的区别 1. ArrayList的缺陷 通过源码知道,ArrayList底层使用数组来存储元素࿱…...
Python 爬虫入门教程:从零构建你的第一个网络爬虫
网络爬虫是一种自动化程序,用于从网站抓取数据。Python 凭借其丰富的库和简单的语法,是构建网络爬虫的理想语言。本文将带你从零开始学习 Python 爬虫的基本知识,并实现一个简单的爬虫项目。 1. 什么是网络爬虫? 网络爬虫&#x…...
Java面试题、八股文——JVM篇最终篇
1.如何选择垃圾收集器? 选择合适的垃圾收集器(Garbage Collector, GC)对于优化Java应用程序的性能至关重要。不同的应用场景和系统需求可能需要不同类型的垃圾收集器来满足。以下是一些考虑因素以及常见的垃圾收集器选项,帮助您做…...
Spring Boot整合Redis Stack构建本地向量数据库相似性查询
Spring Boot整合Redis Stack构建本地向量数据库相似性查询 在微服务架构中,数据的高效存储与快速查询是至关重要的。Redis作为一个高性能的内存数据结构存储系统,不仅可以用作缓存、消息代理,还可以扩展为向量数据库,实现高效的相…...
shell脚本基础学习_总结篇(完结)
细致观看可以,访问shell脚本学习专栏,对应章节会有配图https://blog.csdn.net/2201_75446043/category_12833287.html?spm1001.2014.3001.5482 导语 一、shell脚本简介 1. 定义: 2. 主要特点: 3. shell脚本的基本结构 4. S…...
什么是 C++ 中的函数对象?它有什么特点?
在 C 中,函数对象(Function Object)是一种可调用对象,它允许像函数一样被调用,但实际上它可能并不是真正的函数。函数对象可以是以下几种类型之一: 普通函数: 一个普通的、定义在命名空间或类…...
css:项目
这是一个完整的网站制作的流程 美工会先制作一个原型图: 原型图写的不详细,就是体现一个网页大致的布局 然后美工再做一个psd样例图片 然后再交给程序员 项目 模块化开发:把代码的不同的样式封装起来,需要用到相同样式的标签就…...
macOS 开发环境配置与应用开发指南
macOS 开发环境配置与应用开发指南 macOS作为苹果公司推出的操作系统,因其稳定性、优雅的用户界面和强大的开发支持,已成为开发者和创意专业人士的首选平台之一。无论是开发iOS、macOS桌面应用,还是Web应用、跨平台程序,macOS都提…...
[A-19][V06]ARMv8/v9-内存虚拟化原理
ver0.2 [看前序文章有惊喜,关注W\X\G=Z+H=“浩瀚架构师”,可以解锁全部文章] 前言 前一篇文章,我们介绍了ARM内存的属性,算是一个小小的里程碑点,接下来我们会把注意力重新拉回虚拟化的赛道。我们从[V-05] 虚拟化基础-异常模型(Exception model)之后,花了很多笔墨介绍…...
registry 删除私有仓库镜像
原文链接:https://blog.csdn.net/yogima/article/details/122172744 如果需要彻底删除,只需进行register 磁盘删除镜像 彻底删除了,就可以到达彻底删除的目的。 如果只需要软删除,则只需进行通过API删除。 curl --header "Ac…...
UPLOAD LABS | UPLOAD LABS 靶场初识
关注这个靶场的其它相关笔记:UPLOAD LABS —— 靶场笔记合集-CSDN博客 0x01:UPLOAD LABS 靶场简介 UPLOAD LABS 靶场是一个专门用于学习文件上传漏洞攻击和防御的靶场。它提供了一系列文件上传漏洞的实验环境,用于帮助用户了解文件上传漏洞的…...
Samba服务器常见问题处理
指定的网络文件夹目前是以其他用户名和密码进行映射的。要用其他用户名和密码进行连接,首先请断开所有现有的连接到网络共享的映射 解决方案 单击“开始”菜单,选择“运行…”。 在弹出的窗口中,输入cmd 进入命令行模式,并输入…...
Java基础 设计模式——针对实习面试
目录 Java基础 设计模式单例模式工厂模式观察者模式策略模式装饰器模式其他设计模式 Java基础 设计模式 单例模式 单例模式(Singleton Pattern) 定义:确保一个类只有一个实例,并提供一个全局访问点来访问这个实例。适用场景&…...
【Java学习笔记】Arrays类
Arrays 类 1. 导入包:import java.util.Arrays 2. 常用方法一览表 方法描述Arrays.toString()返回数组的字符串形式Arrays.sort()排序(自然排序和定制排序)Arrays.binarySearch()通过二分搜索法进行查找(前提:数组是…...
uni-app学习笔记二十二---使用vite.config.js全局导入常用依赖
在前面的练习中,每个页面需要使用ref,onShow等生命周期钩子函数时都需要像下面这样导入 import {onMounted, ref} from "vue" 如果不想每个页面都导入,需要使用node.js命令npm安装unplugin-auto-import npm install unplugin-au…...
Frozen-Flask :将 Flask 应用“冻结”为静态文件
Frozen-Flask 是一个用于将 Flask 应用“冻结”为静态文件的 Python 扩展。它的核心用途是:将一个 Flask Web 应用生成成纯静态 HTML 文件,从而可以部署到静态网站托管服务上,如 GitHub Pages、Netlify 或任何支持静态文件的网站服务器。 &am…...
C++ 基础特性深度解析
目录 引言 一、命名空间(namespace) C 中的命名空间 与 C 语言的对比 二、缺省参数 C 中的缺省参数 与 C 语言的对比 三、引用(reference) C 中的引用 与 C 语言的对比 四、inline(内联函数…...
全志A40i android7.1 调试信息打印串口由uart0改为uart3
一,概述 1. 目的 将调试信息打印串口由uart0改为uart3。 2. 版本信息 Uboot版本:2014.07; Kernel版本:Linux-3.10; 二,Uboot 1. sys_config.fex改动 使能uart3(TX:PH00 RX:PH01),并让boo…...
精益数据分析(97/126):邮件营销与用户参与度的关键指标优化指南
精益数据分析(97/126):邮件营销与用户参与度的关键指标优化指南 在数字化营销时代,邮件列表效度、用户参与度和网站性能等指标往往决定着创业公司的增长成败。今天,我们将深入解析邮件打开率、网站可用性、页面参与时…...
基于 HTTP 的单向流式通信协议SSE详解
SSE(Server-Sent Events)详解 🧠 什么是 SSE? SSE(Server-Sent Events) 是 HTML5 标准中定义的一种通信机制,它允许服务器主动将事件推送给客户端(浏览器)。与传统的 H…...
【QT控件】显示类控件
目录 一、Label 二、LCD Number 三、ProgressBar 四、Calendar Widget QT专栏:QT_uyeonashi的博客-CSDN博客 一、Label QLabel 可以用来显示文本和图片. 核心属性如下 代码示例: 显示不同格式的文本 1) 在界面上创建三个 QLabel 尺寸放大一些. objectName 分别…...
简约商务通用宣传年终总结12套PPT模版分享
IOS风格企业宣传PPT模版,年终工作总结PPT模版,简约精致扁平化商务通用动画PPT模版,素雅商务PPT模版 简约商务通用宣传年终总结12套PPT模版分享:商务通用年终总结类PPT模版https://pan.quark.cn/s/ece1e252d7df...
前端打包工具简单介绍
前端打包工具简单介绍 一、Webpack 架构与插件机制 1. Webpack 架构核心组成 Entry(入口) 指定应用的起点文件,比如 src/index.js。 Module(模块) Webpack 把项目当作模块图,模块可以是 JS、CSS、图片等…...
