DrissionPage

news2025/1/11 8:03:36


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

userPhone = "手机号"

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).content
    with open("bg.jpg", "wb") as f:
        f.write(slider_bg_content)
        logger.debug("下载完成咯")
except Exception as e:
    logger.error(f"未知错误: {e}")

拦截滑块数据包

from DrissionPage import ChromiumPage

page = 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 ChromiumPage

page = ChromiumPage()
page.get('https://www.emload.com/v2/')

五. SessionPage的使用

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

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

六.WebPage的使用

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

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

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

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

相关文章

Linux 第二十五章

🐶博主主页:ᰔᩚ. 一怀明月ꦿ ❤️‍🔥专栏系列:线性代数,C初学者入门训练,题解C,C的使用文章,「初学」C,linux 🔥座右铭:“不要等到什么都没有了…

跟TED演讲学英文:How state budgets are breaking US schools by Bill Gates

How state budgets are breaking US schools Link: https://www.ted.com/talks/bill_gates_how_state_budgets_are_breaking_us_schools Speaker: Bill Gates Date: March 2011 文章目录 How state budgets are breaking US schoolsIntroductionVocabularyTranscriptSummary后…

JavaScript 动态网页实例 —— 数值处理对象

前言 Math对象用于进行数学运算。其属性是数学中一些常见的常数值,在程序中可以直接使用。Math对象的方法很多,主要完成一些常见的数学运算,如三角函数计算、乘方、开方、求对数等。在 Math 对象的方法中,除了random()之外的所有方法都需要一个或几个参数,并且其用法基本…

白酒:白酒香型与品质消费的关系及影响

云仓酒庄的豪迈白酒作为中国白酒的品牌,其白酒香型与品质消费的关系及影响备受关注。随着消费者对品质的重视程度不断提高,了解白酒香型与品质之间的关系对于云仓酒庄和消费者都具有重要意义。 经云仓酒庄豪迈白酒分析,白酒香型与品质消费的关…

Kubernetes——基础认识

一、简介 1.Kubernetes是什么 Kubernetes 是一个全新的基于容器技术的分布式架构解决方案,是 Google 开源的一个容器集群管理系统,Kubernetes 简称 K8S。 Kubernetes 是一个一站式的完备的分布式系统开发和支撑平台,更是一个开放平台&#x…

视频号小店不直播怎么出单?这里面的秘密,一篇文章全曝光!

大家好,我是电商糖果 这两年关于视频号搞电商的话题度非常高,也吸引了很多商家入驻。 视频号因为背后巨大的私域流量池扶持,所以它的转化率非常高。 根据官方发出来的战报,我们也可以看出它的数据是翻倍增长。 在2024微信公开…

linux性能监控之atop

1.atop的安装 atop也是一个功能强大的linux服务器监控工具,数据采集包括:cpu、内存、磁盘、网络、进程等 系统未自动安装的,我们还是添加阿里源后,直接yum install -y atop即可 2.atop的配置 [rootk8s-master ~]# cat /etc/sys…

【Java EE】网络原理——UDP

目录 1.应用层 2.传输层 2.1端口号 2.1.1端口号的范围划分 2.1.2一个端口号可以被多个进程绑定吗? 2.1.3一个进程可以绑定多个端口号吗? 3.UDP协议 3.1UDP的格式 3.1.1 UDP的源端口号 3.1.2 UDP的目的端口号 3.1.3 UDP长度 3.1.4UDP校验和 3…

互联网洗鞋工厂实现新时代下的家庭洗护服务;

互联网洗鞋工厂实现新时代下的家庭洗护服务; 拽牛科技洗护系统以智慧城市系统为依托,洗鞋工厂为中心,利用互联网+社区服务商模式,实现了新时代下的家庭洗护服务, 将客户﹣﹣社区服务商&#xfe63…

为什么说TailwindCSS是2024 年前端最优的 CSS 框架?

如果有一本圣经,大家都按照圣经的标准写网页,那世界将更加的标准化和美好。这本圣经就是TailwindCSS。 什么是 Tailwind CSS? Tailwind CSS 是一个流行的 CSS 框架,旨在帮助开发者快速构建现代化的、响应式的 Web 界面。与其他 …

苏州金龙何以成为塞尔维亚中国客车第一品牌?研发向上服务助力!

5月7日至8日,一场举世瞩目的会晤在塞尔维亚举行。作为塞尔维亚中国客车第一品牌,苏州金龙海格客车也为当地民众绿色公共出行提供了“中国力量”。 目前,苏州金龙海格客车在塞尔维亚保有量近200台,是在塞尔维亚保有量最大的中国客车…

Springboot项目使用redis实现session共享

1.安装redis&#xff0c;并配置密码 这里就不针对于redis的安装约配置进行说明了&#xff0c;直接在项目中使用。 2.pom.xml文件中引入需要的maven <dependency><groupId>redis.clients</groupId><artifactId>jedis</artifactId><version&g…

PyQt5 解决界面无响应方案

文章目录 前言版本案例解决方案QThreadQTimer 局部变量创建异步线程导致 UI 未响应如果 QTimer 不使用 self.time 写法 个人简介 前言 在PyQt5中&#xff0c;GUI线程通常指的是Qt的主事件循环线程&#xff0c;也称为主线程。主线程负责处理GUI事件、更新UI界面等任务。在PyQt5…

学习CSS3动画教程:手把手教你绘制跑跑卡丁车

学习之前&#xff0c;请先听一段音乐&#xff1a;等登&#xff0c;等登&#xff0c;等登等登等登&#xff01;没错&#xff0c;这就是我们当年玩的跑跑卡丁车的背景音乐&#xff0c;虽然后来有了QQ飞车&#xff0c;但还是更喜欢跑跑卡丁车&#xff0c;从最初的基础板车&#xf…

js逆向,参数加密js混淆

关键词 JS 混淆、源码乱码、参数动态加密 逆向目标 题目1&#xff1a;抓取所有&#xff08;5页&#xff09;机票的价格&#xff0c;并计算所有机票价格的平均值&#xff0c;填入答案。 目标网址&#xff1a;https://match.yuanrenxue.cn/match/1目标接口&#xff1a;https://ma…

KVM:无法检查 QEMU 二进制文件 /usr/bin/qemu-kvm: 没有那个文件或目录

报错信息&#xff1a; 解决方法&#xff1a; 将qemu的安装路径添加到系统的环境变量中&#xff0c;以便于系统可以正确的识别qemu的位置 在此之前可以先查找一下安装的路径&#xff1a; [rootlocalhost ~]# sudo find / -name qemu-system-x86_64 /usr/share/bash-completi…

大数据面试题 —— 数据仓库

目录 数据仓库是什么数据仓库和数据库的区别为什么要对数据仓库分层数仓分层&#xff0c;以及每一层的作用维度建模的三种模型范式建模、维度建模维度建模过程&#xff0c;如何确定这些维度 ***维度模型的各个维度之间是怎么聚合的聚合过程的数据倾斜怎么解决&#xff1f;数据质…

2024年最新【SpringBoot2】开发实用篇-测试_springboot2 test(1),2024年最新2024春招BAT面试真题详解

既有适合小白学习的零基础资料&#xff0c;也有适合3年以上经验的小伙伴深入学习提升的进阶课程&#xff0c;涵盖了95%以上软件测试知识点&#xff0c;真正体系化&#xff01; 由于文件比较多&#xff0c;这里只是将部分目录截图出来&#xff0c;全套包含大厂面经、学习笔记、…

AI论文速读 | 2024[IJCAI]时空解耦掩码预训练的时空预测

题目&#xff1a; Spatial-Temporal-Decoupled Masked Pre-training for Spatiotemporal Forecasting 作者&#xff1a;Haotian Gao ; Renhe Jiang&#xff08;姜仁和&#xff09; ; Zheng Dong ; Jinliang Deng (邓锦亮); Yuxin Ma ; Xuan Song&#xff08;宋轩&#xff09; …

Python软件安装使用

一、搭建 Python 环境 需要安装的环境主要是两个部分 : 运行环境: Python 开发环境: PyCharm 具体详细安装见此篇博客&#xff1a;Python安装教程 二、创建一个项目 a) 创建一个项目 b) 选择项目所在的位置 , 并选择使用的 Python 解释器 . 注意 , 一般情况下 , PyCh…