【爬虫】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')