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

使用OpenCV进行3D重建:详细指南

3D重建是计算机视觉领域的一项关键技术,它能够从二维图像中恢复出场景的三维结构。这项技术在机器人视觉、增强现实和3D建模等多个领域都有广泛的应用。在本篇技术博客中,我们将详细介绍如何使用OpenCV这一流行的计算机视觉库来实现3D重建。我们将逐步探讨整个过程,包括相机标定、特征点提取与匹配、立体校正、深度图计算以及最终的三维重建。3D重建是一个复杂的过程,涉及多个步骤和多种算法。OpenCV提供了强大的工具来支持这一过程,从相机标定到特征点提取与匹配,再到立体校正和深度图计算,最后实现三维重建。

weixin_41544125的博客 1317

从零到一:手把手教你构建工业级Modbus转MQTT网关(STM32+ESP8266实战)

本文详细介绍了如何利用STM32和ESP8266构建工业级Modbus转MQTT网关,涵盖硬件选型、代码示例、协议转换及稳定性设计。重点解析Modbus RTU与MQTT协议对接阿里云物联网平台的实战步骤,确保数据可靠传输与长期稳定运行,为工业物联网应用提供完整解决方案。

u0v1w2x3的博客 685

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

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

2502_92363190的博客 215

Android11原生设置屏幕亮由Gamma变化改为线性变化

从Android9 开始屏幕亮度调解变成非线性变化,这样的话就会出现 之前亮度变化很小,到后面时变化亮度很快; 修改为线性变化,只需要修改 ./frameworks/base/packages/SettingsLib/src/com/android/settingslib/display/BrightnessUtils.java /* * Copyright (C) 2018 The Android Open Source Project * * Licensed under the Apache L

Android 4926

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

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

zsc3523804011的博客 5848

基于STM32的设计智慧超市管理系统(带收银系统+物联网环境监测)_167

本系统主要由超市环境监测部分和商品管理部分组成。环境监测部分主控芯片采用STM32F103C8T6,主要包括温湿度传感器、烟雾传感器和空调制热开关、空调制冷开关,采集的数据通过ESP8266模块+MQTT协议上传至OneNet云平台,在OneNet云平台设计手机和电脑版本可视化页面,能够在页面上查看超市的环境信息,还能在页面上手动打开空调制热开关和空调制冷开关。商品管理部分主要由RC522-RFID读卡器、上位机组成,实现商品选购、结算、顾客的VIP会员卡注册管理等功能。

6069

广东省道路工程检测练习试题(单选题)真题

1.一般项目的合格点率应达到( ),且不合格点的最大偏差值不得大于规定允许偏差值的1.5倍。A.不低于75%B.不低于80%C.不低于85%D.不低于90%答案:B2.进行土路基平整度检测时,当路宽小于9m,检测点数应为( )A.1B.2C.3D.4答案:A3.根据《城镇道路工程施工与质量验收规范》,在分部工程中,根据工种、材料、施工工艺等划分的是( )A.单位工程B.分项工程C.分部工程D.工序工程答案:B4.根据《城镇道路工程施工与质量验收规范》,土方路基压实度的检测频率为每1000m每压实层抽检( )

ZShy001238的博客 685

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

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

K哥爬虫 4154

RK3566/RK3568 Android 11添加系统服务

【代码】RK3566/RK3568 Android 11添加系统服务。

qq_23921815的博客 641

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

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

2401_87328929的博客 3007

第十四节《OpenCascade集成Qt》

将 OpenCascade 与 Qt 集成是开发图形界面应用的常见需求。通过将 OpenCascade 的几何建模与 Qt 的图形用户界面(GUI)功能结合,可以创建强大而灵活的 CAD 或建模工具。OpenCascade 提供了与 Qt 的集成接口,允许你在 Qt 应用程序中嵌入 OpenCascade 的视图,执行几何操作,并与用户进行交互。以下是 OpenCascade 与 Qt 集成的详细步骤:首先,确保已安装 OpenCascade 和 Qt。你可以从 OpenCascade 官方网站或通过包管理

yumeiguo的博客 597

基于Simulink的BCH码编解码仿真建模示例

BCH码是一类循环码,能够纠正一定数量的随机错误。灵活性:可以根据需要选择不同的码长和纠错能力。高效性:适用于短码长和中等码长的场景,广泛用于卫星通信、存储系统等。实现简单:编码和解码过程可以通过硬件或软件高效实现。在本示例中,我们将使用MATLAB/Simulink中的和模块来完成BCH码的编解码操作,并通过仿真验证其误码率(BER)性能。通过本指南,我们介绍了如何基于Simulink搭建一个BCH码的编解码模型,并进行了仿真以验证其性能。背景介绍:理解BCH码的基本原理及其在通信系统中的应用。

xiaoheshang_123的博客 191

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

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

萧鼎的博客 6571

visio安装包

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

使用 Python 的 DrissionPage 库设置代理 IP

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

a222232s的博客 5187

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

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

余额充值