DrissionPage/docs/使用方法/启动配置/使用配置文件.md
2022-01-18 17:10:42 +08:00

7.0 KiB
Raw Blame History

本库使用 ini 文件记录浏览器或Session对象的启动配置。便于配置复用,免于在代码中加入繁琐的配置信息。
默认情况下,MixPage对象启动时自动加载文件中的配置信息。
也可以在默认配置基础上用简单的方法再次修改,再保存到 ini 文件。
也可以保存多个 ini 文件,按不同项目须要调用。

!> 注意:
ini 文件仅用于管理启动配置,浏览器或Session创建后再修改 ini 文件内容是没有效果的。
如果是接管已打开的浏览器,这些设置也没有用。
每次升级本库ini 文件都会被重置,可另存到其它路径以免重置。

ini 文件内容

ini 文件默认拥有三部分配置:pathschrome_optionssession_options,初始内容如下。

[paths]
; chromedriver.exe路径
chromedriver_path =

; 临时文件夹路径,暂时没有实际作用
tmp_path =

[chrome_options]
; 浏览器默认地址和端口,程序会启动或接管这个端口的浏览器进程,设为 '' 则用 selenium 普通方式启动浏览器
debugger_address = 127.0.0.1:9222

; chrome.exe路径
binary_location =

; 配置信息
arguments = [
            ; 静音
            '--mute-audio',
            ; 不使用沙盒
            '--no-sandbox',
            ; 谷歌文档提到需要加上这个属性来规避bug
            '--disable-gpu',
            ; 忽略警告
            'ignore-certificate-errors',
            ; 不显示信息栏
            '--disable-infobars'
            ]
            
; 插件
extensions = []

; 实验性配置
experimental_options = {
                       'prefs': {
                       ; 下载不弹出窗口
                       'profile.default_content_settings.popups': 0,
                       ; 无弹窗
                       'profile.default_content_setting_values': {'notifications': 2},
                       ; 禁用PDF插件
                       'plugins.plugins_list': [{"enabled": False, "name": "Chrome PDF Viewer"}]
                       },
                       ; 设置为开发者模式,防反爬虫
                       'excludeSwitches': ["enable-automation"],
                       'useAutomationExtension': False
                       }

[session_options]
headers = {
          "User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6) AppleWebKit/603.3.8 (KHTML, like Gecko) Version/10.1.2 Safari/603.3.8",
          "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8",
          "Connection": "keep-alive",
          "Accept-Charset": "utf-8;q=0.7,*;q=0.7"
          }

文件位置

默认配置文件存放在库文件夹下,文件名为 configs.ini。
用户可另存其它配置文件,或从另存的文件读取配置,但默认文件的位置和名称不会改变。

使用默认配置文件启动

使用MixPage对象自动加载

这是默认启动方式。

from DrissionPage import MixPage

page = MixPage()

使用配置对象加载

这种方式一般用于加载配置后须要进一步修改。

from Drission.config import DriverOptions, SessionOptions

do = DriverOptions()
so = SessionOptions()

page = MixPaage(driver_options=do, session_option=so)

使用 Drission 对象加载

这种方式一般用于加载非默认配置文件,或须在多个页面对象间传递Drission对象的情况。

from DrissionPage import MixPage, Drission

ds = Drission(ini_path=r'D:\config1.ini')
page = MixPage(drission=ds)

保存/另存 ini 文件

from DrissionPage.config import DriverOptions

do = DriverOptions()
# 设置不加载图片
do.set_no_imgs()

# 保存到默认 ini 文件
do.save()

# 保存到其它位置的配置文件
do.save(r'D:\config1.ini')

easy_set 方法

Chrome 浏览器的配置繁琐且难以记忆,本库提供一些常用功能的快速设置方法,调用即可修改 ini 文件中该部分内容。

!> 注意:
easy_set 方法仅用于设置 ini 文件,浏览器或 Session 创建后再调用没有效果的。
如果是接管已打开的浏览器,这些设置也没有用。

简单示例

# 导入
from DrissionPage.easy_set import set_headless

# 设置无头模式
set_headless(True)

show_settings()

该方法用于打印 ini 文件内容。

参数:

  • ini_pathini 文件路径,默认读取默认 ini 文件

返回:None

set_paths()

该方法用于设置浏览器用到的几种路径信息,设置后可检查 driver 是否和浏览器匹配。

参数:

  • driver_pathchromedriver.exe 路径
  • chrome_pathchrome.exe 路径
  • local_port本地端口号
  • debugger_address调试浏览器地址会覆盖 local_port 设置127.0.0.1:9222
  • download_path下载文件路径
  • tmp_path临时文件夹路径暂时没有作用
  • user_data_path用户数据路径
  • cache_path缓存路径
  • ini_path要修改的 ini 文件路径,默认设置默认 ini 文件
  • check_version是否检查 chromedriver 和 Chrome 是否匹配

返回:None

set_headless()

该方法用于设置是否已无头模式启动浏览器。

参数:

  • on_offbool类型,表示开或关
  • ini_path: 要修改的 ini 文件路径,默认设置默认 ini 文件

返回:None

set_no_imgs()

该方法用于设置是否禁止加载图片。

参数:

  • on_offbool类型,表示开或关
  • ini_path: 要修改的 ini 文件路径,默认设置默认 ini 文件

返回:None

set_mute()

该方法用于设置是否静音。

参数:

  • on_offbool类型,表示开或关
  • ini_path: 要修改的 ini 文件路径,默认设置默认 ini 文件

返回:None

set_proxy()

该方法用于设置代理。

参数:

  • proxy: 代理网址和端口,如 127.0.0.1:1080
  • ini_path: 要修改的 ini 文件路径,默认设置默认 ini 文件

返回:None

set_user_agent()

该方法用于设置 user agent。

参数:

  • user_agentuser agent文本
  • ini_path: 要修改的 ini 文件路径,默认设置默认 ini 文件

返回:None

set_argument()

该方法用于设置浏览器配置 argument 属性。

参数:

  • arg属性名
  • value属性值有值的属性传入值。没有的传入bool表示开或关
  • ini_path要修改的 ini 文件路径,默认设置默认 ini 文件

返回:None

check_driver_version()

该方法用于检查传入的 chrome 和 chromedriver 是否匹配。

参数:

  • driver_pathchromedriver.exe 路径
  • chrome_pathchrome.exe 路径

返回:bool类型,表示是否匹配

get_match_drive()

该方法用于自动识别 chrome 版本并下载匹配的 driver。

参数:

  • ini_path要读取和修改的 ini 文件路径
  • save_pathchromedriver 保存路径
  • chrome_path指定 chrome.exe 位置,不指定会自动依次在 ini 文件、注册表、系统路径中查找
  • show_msg是否打印信息
  • check_version是否检查版本匹配

返回:成功返回 driver 路径,失败返回None