【爬虫】DrissionPage-3

发布于:2025-05-16 ⋅ 阅读:(15) ⋅ 点赞:(0)

安装: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')


网站公告

今日签到

点亮在社区的每一天
去签到