自动化工具DrissionPage的使用(二)

关于网页自动化工具DrissionPage进行爬虫的使用方法 一个基于 python 的网页自动化工具,它既能控制浏览器,也能收发数据包,还能把两者合而为一。可兼顾浏览器自动化的便利性和 requests 的高效率,可以跨 iframe 查找元素,无需切入切出 阅读详情
AI摘要

本文详细介绍了如何使用DrissionPage库进行网页自动化操作,包括SessionPage的创建、标签定位、数据获取、使用XPath和Class属性选择器,以及设置代理、验证、请求头等高级功能。,

概要

继上篇-> 自动化工具DrissionPage的使用(一)我们继续研究 DrissionPage的使用

开始整活

  • 对于自动化程序,标签定位以及获取标签对应的数据是重中之重
  • 本次以豆瓣排行榜为例 (https://movie.douban.com/chart)

SessionPage

获取SessionPage对象

from DrissionPage import SessionPage as Session
driver = Session()
driver.get('https://movie.douban.com/chart')

获取标签内所对应的数据

# 获取到该标签对象后,所有获取标签对应数据的方式都是通用的

Ele = driver.ele('#db-global-nav') # 这里以id为db-global-nav的标签做案例
print(Ele.html)  # 该标签对应的html源码
print(Ele.tag)  # 获取该id为db-global-nav的标签类型, --> div
print(Ele.text)  # 标签内所有的文本
print(Ele.attrs) # 标签内所有的属性以及属性值.以字典的形式展示 --> {'id': 'db-global-nav', 'class': 'global-nav'}
print(Ele.link)  # 标签内的 href 属性或 src 属性,都没有则返回None

id属性

# 标签定位
<div id="db-global-nav"> --> 对应元素定位方式 --> driver.ele('#db-global-nav')

# 获取标签内所对应的数据
Ele = driver.ele('#db-global-nav')
print(Ele.html)  # 该标签对应的html源码
print(Ele.tag)  # 获取该id为db-global-nav的标签类型, --> div
print(Ele.text)  # 标签内所有的文本
print(Ele.attrs) # 标签内所有的属性以及属性值.以字典的形式展示 --> {'id': 'db-global-nav', 'class': 'global-nav'}
print(Ele.link)  # 标签内的 href 属性或 src 属性,都没有则返回None

class属性

# 标签定位
<div class="indent"> --> 对应元素定位方式 --> driver.ele('.indent')

其他属性

# 固定规则: @属性名=属性值
<td valign="top"> --> 对应元素定位方式 --> driver.ele('@valign=top') 

print(driver.ele('@valign=top').html) # 获取第一个满足条件的标签下的html源码
print(driver.eles('@valign=top')) # 获取所有满足条件的标签,返回的是一个列表

获取所有的a标签

a_list = driver.eles('tag:a')
for a in a_list:
    print(a.link)
    print(a.text)

获取指定标签下所有的a标签

# 当前以 <div class="indent"> 为案例

parentEle = driver.ele(".indent") # 定位到indent
a_list = parentEle.eles('tag:a') # 获取indent下的所有a标签
for a in a_list:
    print(a.link)  # a标签链接
    print(a.text)  # a标签内所有的文本
    print(a.attrs['title'])  # a标签title属性值
    print(a.attrs['class'])  # a标签class属性值

包含(模糊)匹配

# 固定规则: @属性名:属性值
<td valign="top"> --> 对应元素定位方式 --> driver.eles('@valign:top')

# 获取所有属性值包含top并且属性名为valign的标签, 如果只匹配单个则是 driver.ele('@valign:top')

xpath匹配

Ele = driver.ele('#content')  # 定位到该标签
table_list = Ele.eles("xpath://table") # 获取标签下所有的table
for t in table_list:
    # 获取每个 table 下 class 为 p12下面的a标签的链接和文本
    link = t.ele(".pl2").ele('xpath:./a').link
    text = t.ele(".pl2").ele('xpath:./a').text
    print(link, text)

在这里插入图片描述

设置代理 ip

driver.set.proxies(http='http://localhost:1080', https='你的代理地址')  # https为空时使用http的值

是否验证SSL证书

driver.set.verify(on_off=True)

设置请求头

driver.set.headers({...}) # 会覆盖已有请求头
driver.set.header(name='key', value='val') # 单独设置某个值

重定向次数

driver.set.max_redirects(times=15) # 设置最大重定向次数为15次

SessionOptions

可以先创建SessionOptions对象再初始化SessionPage

from DrissionPage import SessionPage as Session, SessionOptions

so = SessionOptions()
so.set_retry(times=5, interval=6)  # 设置重试次数为5, 每次请求最大时间为6
so.set_proxies('代理地址') # 设置代理
driver = Session(session_or_options=so)

ChromiumPage

  • 上文已经介绍过,这个模式是用来操控浏览器的
  • 操作方式和我们熟悉的selenium雷同

获取ChromiumPage对象

from DrissionPage import ChromiumPage
driver = ChromiumPage()

元素定位&获取元素对应数据

  • 同SessionPage

获取cookie

driver.get('https://movie.douban.com/chart')
print(driver.get_cookies())  # 获取当前页面的cookie

页面刷新

driver.refresh()
driver.wait.load_complete() # 等待页面加载完成

WebPage

  • 两种模式d对应ChromiumPage, s对应SessionPage

模式切换

from DrissionPage import WebPage

pageC = WebPage()  # 默认ChromiumPage模式创建对象
pageS = WebPage('s')  # 指定SessionPage模式创建对象
pageS.change_mode(copy_cookies=True) # 切换到 d 模式并传递cookie

cookie传递

pageS.cookies_to_session(copy_user_agent=True, copy_cookies=True) # 把浏览器里的 cookie 以及 ua 传递给Session对象
pageS.cookies_to_browser() # # 把 cookie 传递给 浏览器
自学Python第十八天-自动化测试框架(二):DrissionPage、appium 根据不同的配置,可以接管已打开的浏览器,也可以启动新的浏览器。另外,如果是想临时切换浏览器路径以尝试运行和操作是否正常,可以去掉 .save(),以如下方式结合第1️⃣步的代码。如果要控制浏览器,需设置浏览器路径。DrissionPage使用了一套简洁的语法用于查找元素,支持内置等待、链式查找,同时也支持 css selector、xpath、selenium 原生的 loc 元组。方法查找到,并且可以穿透 iframe 标签进行操作(页面对象支持跨级查找,元素对象并不支持),但是不建议这样使用。 阅读详情

相关推荐

爬虫自动化(DrissionPage)

dDrissionPage官网??概述[这里是图片003]https://www.drissionpage.cn/来自官网的介绍:DrissionPage是一个基于Python的网页自动化工具。既能控制浏览器,也能收发数据包,还能把两者合而为一。DrissionPage语法简洁,使用方便,底层基于CDP协议,拥有较强的反检测机制,目前不需要做任何反检测的操作就可以绕过国内外绝大多数的网站自动化检测。

m0_74825656的博客 2331

自动化测试框架:DrissionPage(1)——安装与设置

但从 3.0 版开始,作者另起炉灶,用 chromium 协议自行实现了 selenium 全部功能,从而摆脱了对 selenium 的依赖,功能更多更强,运行效率更高,开发更灵活。因此,DrissionPage设计初衷,是将它们合而为一,能够在不同须要时切换相应模式,并提供一种人性化的使用方法,提高开发和运行效率。安装过程也是遇到了很多麻烦,下载就花了很多时间,中间下载一直断,就一直运行安装命令,总算多次安装后安装完成了。说了这么多,相信很多人已经跃跃欲试了,怎么快速搭建这套框架,先要准备一些基础环境。

up1292的博客 2万+

开源推荐榜【尝试DrissionPage使用体验优于selenium的自动化工具】

是一个基于Python的网页自动化工具,它结合了浏览器自动化的便利性和requests库的高效率,旨在为用户提供一个功能强大且易于使用的自动化解决方案。以下是对DrissionPage的详细介绍,包括其功能、特点、优点以及适用场景。

一个专注于技术研究创新的程序员 3440

【Python爬虫实战】全面解析 DrissionPage:简化 Python 浏览器自动化的三种模式

在数据抓取与自动化测试领域,处理静态和动态网页的需求日益增加。传统的工具如requests和selenium虽然各有优势,但往往需要根据需求在二者之间切换,增加了代码的复杂度。则创新性地整合了这两种模式,提供了统一的 API,使得静态和动态网页的处理变得更加简洁高效。此外,的模块结合了Playwright的强大性能,专为处理复杂的动态网页而设计,让开发者可以在无头浏览器中高效执行 JavaScript、进行模拟操作,为网页自动化和数据抓取提供了理想的解决方案。

易辰的博客 8138

爬虫自动化之drissionpage实现随时切换代理ip

爬虫自动化drissionpage如何实现随时切换代理

十一姐的博客 5567

Python中DrissionPage的详细解析与实战

DrissionPage 是一个基于 Selenium 和 requests 的轻量级 Python 库,旨在简化网页操作和数据抓取。它为开发者提供了统一的 API,让用户可以方便地在浏览器模式和无浏览器模式之间切换,从而更高效地完成网页自动化任务。 本文将从 DrissionPage 的核心功能、安装配置、主要 API 以及实际应用场景等方面进行详细解析,帮助你全面掌握 DrissionPage 的使用方法。

fudaihb的博客 5704

使用 DrissionPage 和 2Captcha 处理 Turnstile 验证并获取 Faucet 签名

本教程介绍了两种获取 Cloudflare Turnstile 验证值并使用 faucet 签名 API 的方法。第一种方法通过 DrissionPage 模拟浏览器操作,手动获取验证码值。第二种方法则通过 2Captcha 服务,自动化解决验证码问题。

qq_41631913的博客 3630

DrissionPage:Python自动化测试的高效工具

DrissionPage是一个基于Python的高效网页自动化工具,它结合了浏览器自动化的便利性和requests库的高效率,提供了ChromiumPage、WebPage和SessionPage三种页面对象,以满足不同的使用场景。DrissionPage无需特定的WebDriver驱动,支持跨iframe元素定位,能够同时操控浏览器内多个标签页,具有运行速度快、开发灵活、功能强大、内置人性化设计和便捷功能等特点。它使得网页自动化测试变得更加简单和高效,是Python开发者和数据分析师的理想选择。

这家伙很懒,什么都没有留下 1803

突破网页自动化瓶颈:DrissionPage完美解决Blob对象下载难题

你是否曾在使用Selenium或Playwright时,遭遇过点击下载按钮却毫无反应的窘境?是否因无法捕获`Blob URL`(二进制大对象URL)而导致自动化流程功亏一篑?根据DrissionPage官方统计,约32%的网页自动化项目失败案例与`Blob(二进制大对象)`下载相关。这些隐藏在JavaScript中的数据流,正成为制约自动化效率的关键瓶颈。 本文将系统揭示Blob下载的技术原理,...

gitblog_01423的博客 424

FairyGUI编辑器自定义菜单扩展插件

本文涉及到的软件有:FairyGUI,VSCode代码环境涉及到了:LuaVSCode插件:EmmyLua在编写FairyGUI编辑器菜单前,了解一下FairyGUIEditor的API会有效的帮助我们解决很多问题。FairyGUI的扩展是通过编辑器自带的插件功能实现的,插件中我使用的是lua环境模板。导入编辑器的LuaAPI,文件可以在FairyGUI-Editor源码的插件目录中找到。接下来将通过功能来说明对应的API作用。

Aili_Xiao的博客 4500

SAP产品合规(Product Compliance)管理—规格主数据 CG02/CG02WB

SAP产品合规(Product Compliance)管理—规格主数据概览 CG02/CG02WB

Lucas1211的博客 1430

34-自动化补环境和jsdom补环境

本文讲解两种非纯手补环境的方法——自动化和jsdom模块。

2502_92363190的博客 215

Vue2 - 详细实现网页 “开启录音并生成音频文件,上传到服务器效果“,浏览器录制外部音频调用麦克风并传到后端,兼容全部浏览器、支持 PC 网页或手机 H5 网页、可本地播放试听(详细示例运行代码)

vue,nuxt,uniapp,网页网站,麦克风,网页录音,MediaRecorder,浏览器录音,移动端h5网页,手机端录音,web网页录音,recorder-core官方文档,Recorder,非https怎么本地录音,录音报错失败,录音后怎么播放音频,如何获取录音mp3文件,解决一直不提示麦克风权限,小白详细教程,实时录音,调用浏览器麦克风录音,浏览器不兼容,wav,mp3,vue怎么实现网页录音呢,vue2网页录音并上传到服务器,web如何实现录制音频,vue网页录音,音频录制播放和上传服务器,vu

🏆 前端领域优质创作者 6003

使用最新自动化工具DrissionPage爬取小红书评论

最近由于一个比赛需要数据,所以需要用到爬虫。之前我都是用selenium进行数据的爬取,但是爬了几个网站发现都被反爬了,而且selenium不是很稳定,老是出现页面上元素定位不到的错误。在经历了一系列欲哭无泪的报错之后,我开始寻找其他自动化工具,于是上网查阅资料时偶然发现了一个全新的自动化工具——DrissionPage。使用了DrissionPage之后我不禁开始佩服这个写出DrissionPage的人,这一个工具包把我之前遇到的问题基本上都解决了。

zsc3523804011的博客 5848

ComfyUI整合包、秋叶ComfyUI、Florence节点报错下载并加载Florence2模型No module named ‘timm.layers‘、ComfyUI报错解决

步骤操作1打开2地址栏输入cmd并回车3输入命令:4安装完成后重新打开 ComfyUI,执行工作流,即可解决报错。

代码简单说 Vue、JAVA、PHP、Node.js 熟练运用,接口、架构、性能全搞定。 1243

RK3399外设驱动之MIPI

RK3399外设驱动之MIPI 文章目录RK3399外设驱动之MIPIMIPI命令解析入口代码mipi显示配置实例rk3399mipi驱动rk mipi驱动注册过程rk32_mipi_dsi.c解析 内核版本 Linux4.4 平台 rk3399 作者 nineyole MIPI命令解析入口代码 MIPI的入口代码如下:kernel\drivers\video\rockchip\screen\lcd_mipi.c static int __init rk_mipi_screen_in

学无止境 2229

【0基础学爬虫】爬虫基础之自动化工具 DrissionPage 的使用

前三期文章中已经介绍到了 Selenium 与 Playwright 、Pyppeteer 的使用方法,它们的功能都非常强大。而本期要讲的 DrissionPage 更为独特,强大,而且使用更为方便,目前检测少,强烈推荐!!!这里推荐观看十一姐 B 站 DrissionPage 系列视频,很详细:合集·爬虫自动化 DrissionPage 实战案例:DrissionPage 相关资料:官方文档:https://www.drissionpage.cn。

K哥爬虫 4154

GameFramework框架详解之 DataTable配置表模块

一.前言: DataTable模块是项目的配置表模块,配置表一般是从excel导出csv/json/xml格式的,之所以是excel作为源文件,原因是因为策划同学使用配表最方便。然后一键导出到项目中,除了csv/json/xml配置文件外,一般还会伴随着导出配置的实体类,这样研发同学就可以使用了。GameFramework的DataTable模块也是秉持着这种一贯的策略来实现的。 二.DataRow DataRow在excel数据表中,对应的是一行数据,而在代码中对应的其实就是一条数据对象。 接口IData

TxNet 4726

[爬虫实战] 使用 DrissionPage 自动化采集小红书笔记

本文介绍了一个基于DrissionPage框架的小红书笔记自动化采集方案。通过模拟扫码登录、直接构造搜索URL、监听API接口等方式,高效获取笔记数据。

2401_87328929的博客 3007

防护装备穿戴检查:基于YOLOv8与UI界面的深度学习应用

通过结合YOLOv8模型与UI界面,本系统实现了防护装备穿戴检查的自动化。该系统能够快速识别工作人员是否正确佩戴了所需的防护装备,帮助提高安全管理水平。未来,随着技术的发展,防护装备穿戴检查系统将在更多领域得到应用,如工业现场、建筑工地等,实现更加精确和高效的实时监控。

YOLO 355

cesium vue2/vue3教程目录导航

以下是本专栏目录导航,送完整项目源码(拒绝单页源码),可以直接运行,全部配置免费视频教程(B站)。

qq_29384639的博客 4318

【python】使用 DrissionPage 库进行网页自动化操作和数据提取

是一个基于Selenium和Requests的自动化网页操作库。它简化了 Web 页面元素的交互,提供了对元素定位、表单填写、截图等常见操作的支持。与传统的 Selenium 和 Requests 等库相比,DrissionPage 在API设计上更加简洁和易用。该库的一个关键特点是,它结合了 Selenium 和 Requests 两者的优势。Selenium适用于需要进行动态渲染的网页(例如JavaScript生成的内容),而Requests适合用于处理静态网页。通过两者的结合,

萧鼎的博客 6571

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

使用 Python 的 DrissionPage 库设置代理 IP

DrissionPage 是一个基于 Playwright 和 Requests 的高效网页抓取工具,它简化了 Web 自动化、浏览器操作和抓取任务。通过 DrissionPage,用户可以轻松地与网页交互、提交表单、获取数据,甚至使用代理 IP 来隐藏真实的请求来源。DrissionPage 提供了一个简单的方式来实现代理 IP 设置,这对于爬虫、数据抓取或绕过 IP 限制的任务非常有用。只需要简单配置代理地址,就能让你通过代理访问网页,同时保持请求的匿名性。

a222232s的博客 5187

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

上一篇: 网易云音乐JS逆向&Python爬虫&网易云逆向
下一篇: python爬取B站弹幕&B站弹幕逆向&B站弹幕采集&B站弹幕解析
dh_浩开玩笑
博客等级 码龄6年 131粉丝 17原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

dh_浩开玩笑

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值