当前位置: 首页 > backend >正文

【爬虫】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 手动打开

  1. 右键点击浏览器图标,选择属性

  2. 在“目标”路径后面加上 --remote-debugging-port=端口号(注意最前面有个空格)

  3. 点击确定

  4. 在程序中的浏览器配置中指定接管该端口浏览器

文件快捷方式的目标路径设置:"D:\chrome.exe" --remote-debugging-port=9333

接管浏览器时只有local_portaddress参数是有效的。

 

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')

http://www.xdnf.cn/news/6368.html

相关文章:

  • Ubuntu离线安装Minio
  • 鸿蒙OSUniApp 实现的地图定位与导航功能#三方框架 #Uniapp
  • websocket简介与基本使用
  • Protobuf3协议关键字详解与应用实例
  • mybatis-plus配置逻辑删除
  • 以项目的方式学QT开发(一)
  • upload-labs靶场通关详解:第6-9关
  • 解密企业级大模型智能体Agentic AI 关键技术:MCP、A2A、Reasoning LLMs- MCP内幕解析
  • css画图形
  • 海康立体相机3DMVS软件使用不同工作模式介绍
  • vue3项目中使用CanvasEditor开箱即用(组件的形式,组件封装好了)
  • AI数字人融合VR全景:从技术突破到可信场景落地
  • Hive PredicatePushDown 谓词下推规则的计算逻辑
  • Springboot3自定义starter笔记
  • 数据科学和机器学习的“看家兵器”——pandas模块 之五
  • AI实时对话的通信基础,WebRTC技术综合指南
  • 网络安全-等级保护(等保) 2-5 GB/T 25070—2019《信息安全技术 网络安全等级保护安全设计技术要求》-2019-05-10发布【现行】
  • WebRTC技术下的EasyRTC音视频实时通话SDK,助力车载通信打造安全高效的智能出行体验
  • day 17 无监督学习之聚类算法
  • Swagger go中文版本手册
  • 虚拟Python 环境构建器virtualenv安装(macOS版)
  • Prometheus监控系统部署
  • AI 治理进行时:网信办审核加速,AI 合规刻不容缓
  • 2025.05.14华为机考笔试题-第二题-200分
  • C#语法基础
  • 第30节:现代CNN架构-轻量级架构EfficientNet
  • mysql:如何查询版本号与社区版/企业版
  • 算法分析:蛮力法
  • Redis--基础知识点--27--redis缓存分类树
  • 计算机视觉----基于锚点的车道线检测、从Line-CNN到CLRNet到CLRKDNet 本文所提算法Line-CNN 后续会更新以下全部算法