DrissionPage


声明 本文章中所有内容仅供学习交流使用,不用于其他任何目的,不提供完整代码,抓包内容、敏感网址、数据接口等均已做脱敏处理,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关!本文章未经许可禁止转载,禁止任何修改后二次传播,擅自使用本文讲解的技术而导致的任何意外,作者均不负责,若有侵权,请在CSDN 私信 联系作者立即删除!

关于DrissionPage:

官方文档地址:DrissionPage官网

github地址:GitHub - g1879/DrissionPage: 基于python的网页自动化工具。既能控制浏览器,也能收发数据包。可兼顾浏览器自动化的便利性和requests的高效率。功能强大,内置无数人性化设计和便捷功能。语法简洁而优雅,代码量少。

gitee地址:DrissionPage: 基于python的网页自动化工具。既能控制浏览器,也能收发数据包。可兼顾浏览器自动化的便利性和requests的高效率。功能强大,内置无数人性化设计和便捷功能。语法简洁而优雅,代码量少。 (gitee.com)

  • 使用DrissionPage可以减少对于一些特定网站的逆向。
  • 关于DrissionPage的特性:💥 4.0 功能介绍 | DrissionPage官网
  • 关于DrissionPage的使用文档:🛸 概述 | DrissionPage官网
  • 反爬技术层出不断,自动化也是一种反反爬手段,虽然还有反反反爬

一. 概述

  • DrissionPage 是一个基于 python 的网页自动化工具
  • 它既能控制浏览器,也能收发数据包,还能把两者合而为一。
  • 可兼顾浏览器自动化的便利性和 requests 的高效率。
  • 它功能强大,内置无数人性化设计和便捷功能。
  • 它的语法简洁而优雅,代码量少,对新手友好。

二. 安装 DrissionPage 

安装:pip install DrissionPage

如果你已经安装了DrissionPage可以升级为最新稳定版:pip install DrissionPage --upgrade

三.初体验

注:本次初体验不会太过具体的使用DrissionPage提供的api,本章需要了解的是DrissionPage 三种使用模式。

  • ChromiumPage模式:用于控制浏览器访问网页
  • SessionPage模式:用于以收发数据包的形式访问网页
  • WebPage模式:支持以上两种模式,控制浏览器和收发数据包

ChromiumPage模式打开浏览器访问百度:

from DrissionPage import ChromiumPage# 创建对象
page = ChromiumPage()
# 访问网页
page.get("https://www.baidu.com")


SessionPage模式:(可以理解为requests)

from DrissionPage import SessionPage# 创建页面对象
session = SessionPage()
# 访问网页
session.get("https://httpbin.org/get")
print(session.json)


WebPage模式:

  • WebPage中有两种模式:
    • d参数为ChromiumPage模式,默认
    • s参数为SessionPage模式
from DrissionPage import WebPage# 创建WebPage,默认为 ChromiumPage模式 
# page = WebPage()
# page.get("https://www.baidu.com")# 创建webpage,指定为SessionPage模式
session = WebPage("s")
session.get("https://httpbin.org/get")
print(session.json)

四. ChromePage的使用

关于ChromePage的使用建议直接是看官方文档:🚤 概述 | DrissionPage官网

下载滑块背景图

import re
import requests
from loguru import logger
from DrissionPage import ChromiumPageuserPhone = "手机号"page = ChromiumPage()
page.get('网站就不放了,看代码就行')
phone = page.ele('@name=phone')
if phone is None:raise Exception("找不到name属性为phone的参数")
phone.input(userPhone)click_sms = page.ele('@class=get-code')
if phone is None:raise Exception("找不到class属性为get-code的参数")
click_sms.click()# 等待网页进入加载状态
page.wait.load_start()try:# 获取iframe对象iframe = page.get_frame("#tcaptcha_iframe_dy")slideBg = iframe.ele("#slideBgWrap").ele('@class=tc-bg-img unselectable')slider_bg_url = re.search(r'url\("(.+)"', slideBg.html).group(1).replace("amp;", '')slider_bg_content = requests.get(slider_bg_url).contentwith open("bg.jpg", "wb") as f:f.write(slider_bg_content)logger.debug("下载完成咯")
except Exception as e:logger.error(f"未知错误: {e}")

拦截滑块数据包

from DrissionPage import ChromiumPagepage = ChromiumPage()
page.set.load_mode.none()  # 设置加载模式为none
# 监听接口为cap_union_prehandle数据包
page.listen.start('dHVyaW5nLmNhcHRjaGEucWNsb3VkLmNvbS9jYXBfdW5pb25fcHJlaGFuZGxl')
page.get("aHR0cHM6Ly9jbG91ZC50ZW5jZW50LmNvbS9wcm9kdWN0L2NhcHRjaGE=")# 点击 "立即体验" 触发滑块,加载界面从而得到 cap_union_prehandle 接口的数据包
captcha_click = page.ele('#captcha_click')
if captcha_click is None:raise Exception("没找到id属性值为captcha_click")
captcha_click.click()# 等待数据包
packet = page.listen.wait()
# 打印数据包内容
print(packet.response.body)# 拿到数据包后强制当前页面加载
page.stop_loading()

过5s盾

from DrissionPage import ChromiumPagepage = ChromiumPage()
page.get('https://www.emload.com/v2/')

五. SessionPage的使用

DrissionPage中的SessionPage可以理解为requests和beautifulsoup的组合,用起来也可以方便,这里就不做文章。可以直接看官方文档

  •  关于SessionPage的使用建议直接是看官方文档:🚄 概述 | DrissionPage官网

六.WebPage的使用

WebPage就是SessionPage和ChromePage的合体,可以边看文档边使用。

  • WebPage官方文档:🛸 概述 | DrissionPage官网

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/3019501.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

RUST 编程语言使构建更安全的软件变得更加容易。RUST ALL THE THINGS 需要什么?

人不走空 🌈个人主页:人不走空 💖系列专栏:算法专题 ⏰诗词歌赋:斯是陋室,惟吾德馨 目录 🌈个人主页:人不走空 💖系列专栏:算法专题 ⏰诗词歌…

机器学习:基于K-近邻(KNN)、高斯贝叶斯(GaussianNB)、SVC、随机森林(RF)、梯度提升树(GBDT)预测葡萄酒质量

前言 系列专栏:机器学习:高级应用与实践【项目实战100】【2024】✨︎ 在本专栏中不仅包含一些适合初学者的最新机器学习项目,每个项目都处理一组不同的问题,包括监督和无监督学习、分类、回归和聚类,而且涉及创建深度学…

车辆充电桩|基于Springboot+vue的车辆充电桩管理系统的设计与实现(源码+数据库+文档)

车辆充电桩管理系统 目录 基于Springboot+vue的车辆充电桩管理系统设计与实现 一、前言 二、系统设计 三、系统功能设计 1 前台功能模块 4.1.1 首页功能 4.1.2 用户后台管理 2 后台功能模块 4.2.1 管理员功能 4.2.2 维修员功能 四、数据库设计 五、核…

公众号流量主的收益怎么样?

公众号之前是一个私域平台,没有粉丝基本是没有推荐的,所以之前入门的门槛还是很高的,但是今年公众号和视频号改变了推流的机制,现在发的文章会进入到流量池中,进入到公域流量,所以发布的优质文章会大爆的&a…

演唱会新风:允许部分歌手闭麦,让观众先唱

演唱会市场的热度从2023年延续至今,出现了一些“倒反天罡”的现象。 例如:让歌迷在台下给歌手唱歌。 5月6日抖音娱乐榜第一的消息是“第一次见辟谣观众没假唱的”。原因是凤凰传奇在常州和北京鸟巢先后举办两场演唱会,其中鸟巢演唱会被认为…

工程技术SCI期刊,中科院三区,一投就中,国人友刊!

一、期刊名称 Industrial Management & Data Systems 二、期刊简介概况 期刊类型:SCI 学科领域:工程技术 影响因子:5.5 中科院分区:3区 出版方式:订阅模式/开放出版 版面费:$4120 三、期刊征稿范…

500的项目研发成本2000?

上个月接了一个小程序的二开项目,功能不多就2个诉求:调整首页数据排序规则,帖子详情增加一个海报,报了一个我认为还比较合适的价格500。 当我拿到代码的那一刻有点小害怕,因为这个客户的之前合作过一次,项…

Chromium编译指南2024 Windows11篇-获取 Chromium 的源代码(五)

前言 在《Chromium编译指南2024(四)》中,我们完成了Git 的初始化配置。 现在,我们将进一步讨论如何获取 Chromium 的源代码,并准备构建所需的文件。 1. 获取Chromium的源代码 在合适的位置准备一个文件夹&#xff…

Python中使用嵌套for循环读取csv文件出现问题

如果我们在使用嵌套循环来读取 CSV 文件时遇到了问题,可以提供一些代码示例和出现的具体错误,这样我可以更好地帮助大家解决问题。不过,现在我可以给大家一个基本的示例,演示如何使用嵌套循环来读取 CSV 文件。 问题背景 我需要读…

spring bean生命周期全部过程

Spring Bean的生命周期包括以下全部过程: 实例化:在Spring容器启动时,根据配置文件或注解等信息创建Bean的实例。属性赋值:如果Bean有属性需要进行初始化,Spring容器会自动为这些属性进行赋值。自定义初始化方法&…

Tomcat端口占用解决方案

Windows操作系统 出现这种情况: Error was Port already in use :40001;nested exception is :java.net.BindException: Address already in use : JVM_Bind; 步骤1:按下winR键,输入cmd 步骤2:输入以下命令 netstat …

PS五官与服装PSD文件大全,男女证件照制作必备素材

一、素材描述 男女证件照服装和五官等PSD文件大全,制作证件照的必备素材合集,轻松制作高端大气的证件照。什么是DR5?DR5是Delicious Retouch 5的简称,这是一款非常优秀的PS人像磨皮美容插件,DR5的主要功能就是针对人像…

【七十九】【算法分析与设计】并查集模板!!!并查集的实现_牛客题霸_牛客网,【模板】并查集 - 洛谷,并查集代码!!!

并查集的实现_牛客题霸_牛客网 描述 给定一个没有重复值的整形数组arr,初始时认为arr中每一个数各自都是一个单独的集合。请设计一种叫UnionFind的结构,并提供以下两个操作。 boolean isSameSet(int a, int b): 查询a和b这两个数是否属于一个集合 void u…

Android 启动提示Android 正在升级...提示源码分析

正常情况下烧录的新机会有这个提示,因为系统启动时候要对系统APP做DexOpt优化,流程如下: 进入performBootDexOpt函数: 提示框代码如下: 而提示框的Tile和Msg如下: 打印Log: 觉得本文对…

炫酷Chrome:插件大礼包

Chrome浏览器以其强大的功能和丰富的扩展插件库而闻名。 其中,有些插件专为提升用户的浏览体验而设计,例如更换Chrome网页背景图、自定义鼠标点击样式,以及提供便捷的页面跳转工具等。 最近,有一款被称为“宝藏插件包”的工具引…

AI图书推荐:Zapier和AI融合来自动化业务流程

这本书《Zapier和AI融合来自动化业务流程》(Automate It with Zapier and Generative AI)由Kelly Goss撰写,这本书是为想要使用Zapier和AI集成功能来自动化重复性任务、提高生产力的微型、小型或中型企业的业务所有者、运营经理和团队准备的。…

字节跳动(社招)四面算法原题

TikTok 进展 又是一期定时汇报 TikTok 进展的推文。 上周,美国总统拜登签署了价值 950 亿美元的一揽子对外援助法案。 该法案涉及强制字节跳动剥离旗下应用 TikTok 美国业务,即 针对 TikTok 非卖即禁的"强抢行为"开始进入九个月(27…

某云eHR PtFjk.mob 任意文件上传漏洞复现

0x01 产品简介 某云eHR是大中型企业广泛采用人力资源管理系统。红海云是国内顶尖的HR软件供应商,是新一代eHR系统的领导者。 0x02 漏洞概述 某云EHR系统PtFjk.mob接口处存在未授权文件上传漏洞,攻击者可上传webshell来命令执行,获取服务器权限。 0x03 复现环境 FOFA:b…

大模型市场爆发式增长,但生成式AI成功的关键是什么?

进入2024年,大模型市场正在爆发式增长。根据相关媒体的总结,2024年1-4 月被统计到的大模型相关中标金额已经达到2023年全部中标项目披露金额的77%左右;其中,从项目数量来看,应用类占63%、算力类占21%、大模型类占13%、…

交换机端口隔离

拓扑图 配置 port-isolate mode命令用来配置端口隔离模式。 缺省情况下,端口隔离模式为二层隔离三层互通。 端口隔离包括双向隔离和单向隔离。接口的单向隔离是指若在接口A上配置它与接口B隔离,则从接口A发送的报文不能到达接口B,但从接口…