自动化工具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

SGLang HiCache实战:手把手教你配置KV Cache Offload,让大模型推理成本直降84%

本文详细介绍了SGLang HiCache在KV Cache Offload配置与调优中的实战应用,通过多级存储架构和智能卸载策略,显著降低大模型推理成本达84%。文章涵盖HiCache架构优势、环境配置、高级调优策略及生产环境最佳实践,帮助开发者优化GPU显存使用,提升并发处理能力。

weixin_29044713的博客 462

Linux 隐藏进程

这种方式属于DKoM(Direct Kernel Object Manipulation)攻击方式了,即直接内核对象操作技术。关于第一种hook方式可以参考上一篇文章。最后推荐一个rootkit工具。

chi's blog 2051

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

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

2502_92363190的博客 215

GEE——土地利用分类之监督分类

利用GEE做监督分类,以武汉市为例。 训练器我们选择随机森林;数据选择Landsat-8;训练样本使用的是GEE提供的一种,它把地表分为三类:水体、植被和城市用地。 选择训练样本 用要素集来标记训练样本。每个要素都有一个landcover 的属性,0表示城市用地,1表示植被,2表示水体。 对影像进行分类 其中一部分进行分类器的训练,还有一部分留下来做精度验证。 输出影像及混淆矩阵 print(LABEL_DATA); var wuhan = ee.FeatureCollection('users/

qq_41600680的博客 1万+

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

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

zsc3523804011的博客 5848

AI编程工具选哪个更高效?开发者深度评测

无论是代码生成、错误修复,还是架构设计,AI都能提供强大的辅助能力。然而,市面上AI编程工具众多,如何选择最适合自己的?本文将从代码质量、响应速度、多语言支持、集成能力等多个维度,为你解析2025年最主流的几款AI编程工具,帮助你做出更高效的选择。根据2025年最新调研数据,全球超过85%的开发者正在使用AI编程工具辅助开发,相比2023年增长了近40%。合理利用AI,能让你的开发效率提升数倍,但真正的核心竞争力,仍然在于你的编程思维和解决问题的能力。:技术较强的开发者、重视数据隐私的企业。

1855

Ubuntu20.04/Debian10安装向日葵远程控制踩坑实录(附依赖问题解决方案)

本文详细介绍了在Ubuntu 20.04/Debian 10系统上安装向日葵远程控制软件的全过程,重点解决了常见的依赖问题,特别是libwebkitgtk相关错误。通过自动修复、手动修改.deb包依赖和使用兼容层三种解决方案,帮助用户顺利完成安装并优化远程控制体验。

silver的专栏 750

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

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

K哥爬虫 4154

【Hyper-V】虚拟机网络配置全解析:从端口映射到固定IP实战

本文全面解析Hyper-V虚拟机网络配置,从理解虚拟交换机三种模式(外部、内部、专用)的底层逻辑入手,指导用户创建稳定的内部/NAT网络,并详细演示如何在Linux与Windows虚拟机中配置固定IP。文章进一步深入讲解端口映射原理与netsh命令实战,以及双网卡配置和PowerShell自动化脚本等高级技巧,帮助用户彻底解决虚拟机网络“失联”问题,实现灵活可控的网络环境。

weixin_29290947的博客 269

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

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

2401_87328929的博客 3007

深度强化学习 | 基于SAC算法的动态避障(ROS C++仿真)

本文介绍了基于SAC(软性演员-评论家)算法的机器人运动规划方法,通过PyTorch框架实现了端到端训练,并部署到Python和ROS C++中。实验结果显示,基于SAC算法的智能体在动态避障任务中表现良好,能实现从起点到终点的无碰撞导航。

FRIGIDWINTER的博客 8214

在Simulink中实现基于深度强化学习的控制算法仿真建模

通过上述步骤,你可以在Simulink中实现基于深度强化学习的控制算法仿真建模。这种方法适用于许多复杂的控制问题,尤其是当传统控制方法难以找到有效解决方案时。随着经验的积累,你可以进一步探索不同的深度强化学习算法及其变种,以适应更广泛的应用场景。此外,还可以结合其他先进技术(如迁移学习、多智能体协作等),提升模型的表现能力。

amy_mhd的博客 415

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

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

萧鼎的博客 6571

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

使用 Python 的 DrissionPage 库设置代理 IP

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

a222232s的博客 5187

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

上一篇: 网易云音乐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、付费专栏及课程。

余额充值