【爬虫】DrissionPage-3
安装:4.1最新版本
pip install drissionpage --upgrade
官方文档:
🛰️ 连接浏览器 | DrissionPage官网
1 Chromium对象
Chromium对象用于连接和管理浏览器。标签页的开关和获取、整体运行参数配置、浏览器信息获取等都由它进行。
1.1 默认方式
from DrissionPage import Chromium browser = Chromium()
1.2 指定端口或地址
from DrissionPage import Chromium # 接管9333端口的浏览器,如该端口空闲,启动一个浏览器
browser = Chromium(9333)
browser = Chromium('127.0.0.1:9333')
2 ChromiumOptions对象
配置好后传递给Chromium类来创建浏览器实例。
2.1 指定浏览器路径
# 导入 ChromiumOptions
from DrissionPage import Chromium, ChromiumOptions # 创建浏览器配置对象,指定浏览器路径
co = ChromiumOptions().set_browser_path(r'D:\chrome.exe')
# 用该配置创建页面对象
browser = Chromium(addr_or_opts=co)
2.2 指定 ini 文件创建
from DrissionPage import Chromium, ChromiumOptions # 创建配置对象时指定要读取的ini文件路径
co = ChromiumOptions(ini_path=r'./config1.ini')
# 使用该配置对象创建页面
browser = Chromium(addr_or_opts=co)
2.3 手动指定端口和路径
from DrissionPage import Chromium, ChromiumOptions co = ChromiumOptions().set_local_port(9333).set_user_data_path(r'C:\tmp')
browser = Chromium(co)
2.3.1 auto_port()方法
每次使用空闲的端口和临时用户文件夹创建浏览器,并且运行数据会自动清除。
多进程使用时,可用
scope
参数指定每个进程使用的端口范围,以免发生冲突。
from DrissionPage import Chromium, ChromiumOptions co = ChromiumOptions().auto_port()
tab1 = Chromium(addr_or_opts=co).latest_tab
tab2 = Chromium(addr_or_opts=co).latest_tab tab2.get('http://DrissionPage.cn')
tab1.get('https://www.baidu.com')
2.3.2 new_env()方法
指定启动全新的浏览器。适合批量登陆,多用户
from DrissionPage import Chromium, ChromiumOptions co = ChromiumOptions().new_env()
browser = Chromium(co)
2.3.3 use_system_user_path()方法
使用系统安装的浏览器的默认用户文件夹。以便复用用户信息和插件等。
from DrissionPage import Chromium, ChromiumOptions co = ChromiumOptions().use_system_user_path()
browser = Chromium(co)
默认配置下,由 DrissionPage 创建的浏览器,用户文件夹在系统临时文件夹的
DrissionPage\userData
文件夹内,以端口命名。假如用 DrissionPage 默认配置在 9222 端口创建一个浏览器,那么用户数据就存放在
C:\Users\用户名\AppData\Local\Temp\DrissionPage\userData\9222
路径。这个用户文件夹不会主动清除,下次再使用 9222 端口时,会继续使用。
如果使用
auto_port()
,会存放在系统临时文件夹的DrissionPage\autoPortData
文件夹内,以端口命名。如
C:\Users\用户名\AppData\Local\Temp\DrissionPage\autoPortData\21489
。这个用户文件夹是临时的,用完会被主动清除。
3 接管浏览器
3.1 配置的 ip:port 信息不变
使程序不必每次重新开始,可以单独调试某个功能
from DrissionPage import Chromium # 在9333端口启动浏览器同时创建对象,如果浏览器已经存在,则接管它
browser = Chromium(9333)
3.2 手动打开
右键点击浏览器图标,选择属性
在“目标”路径后面加上
--remote-debugging-port=端口号
(注意最前面有个空格)点击确定
在程序中的浏览器配置中指定接管该端口浏览器
文件快捷方式的目标路径设置:"D:\chrome.exe" --remote-debugging-port=9333
接管浏览器时只有
local_port
、address
参数是有效的。
3.3 bat 文件启动
可以把上一种方式的目标路径设置写进 bat 文件(Windows系统),运行 bat 文件来启动浏览器,再用程序接管。
新建一个文本文件,在里面输入以下内容(路径改为自己电脑的):"D:\chrome.exe" --remote-debugging-port=9333
保存后把后缀改成 bat,然后双击运行就能在 9333 端口启动一个浏览器。程序代码则和上一个方法一致。
4 多浏览器共存
4.1 指定独立端口和数据文件夹
from DrissionPage import Chromium, ChromiumOptions# 创建多个配置对象,每个指定不同的端口号和用户文件夹路径
co1 = ChromiumOptions().set_paths(local_port=9111, user_data_path=r'D:\data1')
co2 = ChromiumOptions().set_paths(local_port=9222, user_data_path=r'D:\data2')# 创建多个页面对象
tab1 = Chromium(addr_or_opts=co1).latest_tab
tab2 = Chromium(addr_or_opts=co2).latest_tab# 每个页面对象控制一个浏览器
tab1.get('http://DrissionPage.cn')
tab2.get('https://www.baidu.com')
相关文章:
【爬虫】DrissionPage-3
安装:4.1最新版本 pip install drissionpage --upgrade 官方文档:🛰️ 连接浏览器 | DrissionPage官网 1 Chromium对象 Chromium对象用于连接和管理浏览器。标签页的开关和获取、整体运行参数配置、浏览器信息获取等都由它进行。 1.1 默认…...

Web开发-JavaEE应用SpringBoot栈SnakeYaml反序列化链JARWAR构建打包
知识点: 1、安全开发-JavaEE-WAR&JAR打包&反编译 2、安全开发-JavaEE-SnakeYaml反序列化&链 一、演示案例-WEB开发-JavaEE-项目-SnakeYaml序列化 常见的创建的序列化和反序列化协议 • (已讲)JAVA内置的writeObject()/readObje…...

项目复习(2)
第四天 高并发优化 前端每隔15秒就发起一次请求,将播放记录写入数据库。 但问题是,提交播放记录的业务太复杂了,其中涉及到大量的数据库操作:在并发较高的情况下,会给数据库带来非常大的压力 使用Redis合并写请求 一…...

UE 材质基础 第一天
课程:虚幻引擎【UE5】材质宝典【初学者材质基础入门系列】-北冥没有鱼啊_-稍后再看-哔哩哔哩视频 随便记录一些 黑色是0到负无穷,白色是1到无穷 各向异性 有点类似于高光,可以配合切线来使用,R G B 相当于 X Y Z轴,切…...
短剧小程序系统开发源码上架,短剧项目市场分析
引言 随着短视频内容消费的爆发式增长,短剧小程序凭借其碎片化、强互动、低成本的特点,成为内容创业与资本布局的新风口。2024年以来,行业规模突破500亿元,预计2027年将超千亿17。本文将深度解析短剧小程序系统开发的技术优势、市…...

学习FineBI
FineBI 第一章 FineBI 介绍 1.1. FineBI 概述 FineBI 是帆软软件有限公司推出的一款商业智能 (Business Intelligence) 产品 。 FineBI 是新一代大数据分析的 BI 工具 , 旨在帮助企业的业务人员充分了解和利用他们的数据 。FineBI 凭借强…...
Oracle日期计算跟Mysql计算日期差距问题-导致两边计算不一致
Oracle数据库对日期做加法时,得到的时间是某天的12:00:00 例: Oracle计算 select (TO_DATE(2025-04-14, YYYY-MM-DD)1.5*365) from dual; 结果:2026/10/13 12:00:00Mysql计算 select DATE_ADD( str_to_date( 2025-04-14, %Y-%m-%d ), INTER…...

深入剖析某App视频详情逆向:聚焦sig3参数攻克
深入剖析某手App视频详情逆向:聚焦sig3参数攻克 一、引言 在当今互联网信息爆炸的时代,短视频平台如某手,已成为人们获取信息、娱乐消遣的重要渠道。对于技术爱好者和研究人员而言,深入探索其内部机制,特别是视频详情…...
Java求职面试揭秘:从Spring到微服务的技术挑战
文章简述 在这篇文章中,我们将通过一个幽默的面试场景,揭秘互联网大厂Java求职者在面试中面对的技术挑战。面试官将从Spring框架、微服务架构到大数据处理等多个维度进行提问,并详细讲解这些技术点的应用场景和解决方案,帮助小白…...

【Linux】Linux安装并配置MongoDB
目录 1.添加仓库 2.安装 MongoDB 包 3.启动 MongoDB 服务 4. 验证安装 5.配置 5.1.进入无认证模式 5.2.1创建用户 5.2.2.开启认证 5.2.3重启 5.2.4.登录 6.端口变更 7.卸载 7.1.停止 MongoDB 服务 7.2.禁用 MongoDB 开机自启动 7.3.卸载 MongoDB 包 7.4.删除数…...
HANA数据库死锁
死锁是两个或多个事务相互交叉锁定的情况,因此任何事务都无法继续进行。 通常死锁是由应用程序设计缺陷引起的,但在主键约束的上下文中也可能存在更多的技术死锁(这种情况请参考 SAP note 2429521)。 当 HANA 数据库出现死锁时&am…...
STC32G12K128实战:串口通信
STC32G12K128芯片写一个按键通过串口1发送字符串的程序。首先,确认芯片的串口1配置。STC32G系列通常使用UART1,相关的寄存器是P_SW1来选择引脚。默认情况下,UART1的TX是P3.1。 接下来是设置定时器作为波特率发生器。通常用定时器2,…...
Kotlin Multiplatform与Flutter、Compose共存:构建高效跨平台应用的完整指南
简介 在移动开发领域,跨平台技术正在重塑开发范式。Kotlin Multiplatform (KMP) 作为 JetBrains 推出的多平台开发框架,结合了 Kotlin 的简洁性与原生性能优势,使开发者能够高效共享业务逻辑。而 Flutter 凭借其高性能渲染引擎(Skia)和丰富的组件库,成为混合开发的首选方…...
ElasticSearch深入解析(十二):聚合——分桶聚合、指标聚合、管道子聚合
文章目录 一、分桶聚合1. 分桶聚合的核心逻辑与核心类型2. 分桶聚合的高级特性 二、指标聚合1. 指标聚合的核心逻辑与基础类型(1)基础统计指标(单值输出)(2)复合统计指标(多值输出) …...
spark小任务
import org.apache.spark.{Partitioner, SparkConf, SparkContext}object PartitionCustom {// 分区器决定哪一个元素进入某一个分区// 目标: 把10个分区器,偶数分在第一个分区,奇数分在第二个分区// 自定义分区器// 1. 创建一个类继承Partitioner// 2. …...
Ubuntu 20.04 报错记录: Matplotlib 无法使用 OpenCV 的 libqxcb.so
网上查了一下这个报错,有很多解决方案,但是都不是针对 OpenCV 触发的这种 qt.qpa.plugin: Could not load the Qt platform plugin "xcb" in " */lib/*/site-packages/cv2/qt/plugins" even though it was found. 本文的方案是牺牲 …...
JS 高级程序设计 设计模式
设计模式是提升代码可维护性、可扩展性和可复用的重要工具 创建型模式 工厂模式 封装对象的创建过程,通过函数或类统一生成实例,避免直接使用 new 关键字简单工厂:通过函数返回不同对象实例 function createButton(type) {if (type prim…...

新电脑软件配置二:安装python,git, pycharm
安装python 地址 https://www.python.org/downloads/ 不是很懂为什么这么多版本 安装windows64位的 这里我是凭自己感觉装的了 然后cmd输入命令没有生效,先重启下? 重启之后再次验证 环境是成功的 之前是输入的python -version 命令输入错误 安装pyc…...

数据仓库:企业数据管理的核心引擎
一、数据仓库的由来 数据仓库(Data Warehouse, DW)概念的诞生源于企业对数据价值的深度挖掘需求。在1980年代,随着OLTP(联机事务处理)系统在企业中的普及,传统关系型数据库在处理海量数据分析时显露出明显瓶…...

MCU开发学习记录17* - RTC学习与实践(HAL库) - 日历、闹钟、RTC备份寄存器 -STM32CubeMX
名词解释: RTC:Real-Time Clock 统一文章结构(数字后加*): 第一部分: 阐述外设工作原理;第二部分:芯片参考手册对应外设的学习;第三部分:使用STM32CubeMX进…...

C++中的四种强制转换
static_cast 原型:static_cast<type-id>(expression) type-id表示目标类型,expression表示要转换的表达式 static_cast用于非多态类型的转换(静态转换),编译器隐式执行的任何类型转换都可用static_c…...

YOLOv2目标检测算法:速度与精度的平衡之道
一、YOLOv2的核心改进:从V1到V2的蜕变 YOLOv2作为YOLO系列的第二代算法,在继承V1端到端、单阶段检测的基础上,针对V1存在的小目标检测弱、定位精度低等问题进行了全方位升级,成为目标检测领域的重要里程碑。 (一&am…...
Quic如何实现udp可靠传输
QUIC(Quick UDP Internet Connections)是由 Google 设计并被 IETF 标准化的传输层协议,它基于 UDP 实现,但提供了类似 TCP 的可靠性和更高级的功能(如多路复用、0-RTT 握手、TLS 加密等)。 尽管 UDP 是不可…...

利用腾讯云MCP提升跨平台协作效率的实践与探索
一、场景痛点 在当今这个数字化快速发展的时代,跨平台协作成为了许多企业和团队面临的一个重大挑战。随着企业业务的不断拓展,团队成员往往需要利用多种工具和平台进行沟通、协作和管理。这些平台包括但不限于电子邮件、即时通讯工具、项目管理软件、文…...

【Vue篇】数据秘语:从watch源码看响应式宇宙的蝴蝶效应
目录 引言 一、watch侦听器(监视器) 1.作用: 2.语法: 3.侦听器代码准备 4. 配置项 5.总结 二、翻译案例-代码实现 1.需求 2.代码实现 三、综合案例——购物车案例 1. 需求 2. 代码 引言 💬 欢迎讨论&#…...
Python高级特性深度解析:从熟练到精通的跃迁之路
Python高级特性深度解析:从熟练到精通的跃迁之路 引言 对于已经掌握Python基础语法的开发者而言,如何突破瓶颈进入高手行列?本文将从Python的高级特性入手,深入剖析那些能让代码更优雅、效率更高的技术点,助你完成从…...

OGGMA 21c 微服务 (MySQL) 安装避坑指南
前言 这两天在写 100 天实战课程 的 OGG 微服务课程: 在 Oracle Linux 8.10 上安装 OGGMA 21c MySQL 遇到了一点问题,分享给大家一起避坑! 环境信息 环境信息: 主机版本主机名实例名MySQL 版本IP 地址数据库字符集Goldengate …...

Linux面试题集合(4)
现有压缩文件:a.tar.gz存在于etc目录,如何解压到data目录 tar -zxvf /etc/a.tar.gz -C /data 给admin.txt创建一个软链接 ln -s admin.txt adminl 查找etc目录下以vilinux开头的文件 find /etc -name vilinux* 查找admin目录下以test开头的文件 find admin -name te…...
iOS Safari调试教程
iOS Safari调试 本教程将指导您如何使用WebDebugX调试iOS设备上的Safari浏览器。通过本教程,您将学习如何连接iOS设备、调试Safari中的网页、分析性能问题以及解决常见的调试挑战。 准备工作 在开始调试iOS Safari之前,请确保您已经: 安装…...
基于互联网和LabVIEW的多通道数据采集系统仿真设计
标题:基于互联网和LabVIEW的多通道数据采集系统仿真设计 内容:1.摘要 在当今科技飞速发展的背景下,多通道数据采集在众多领域有着广泛需求。本研究的目的是设计一个基于互联网和LabVIEW的多通道数据采集系统仿真方案。采用互联网技术实现数据的远程传输与共享&…...