閉じる

【Python/Selenium】Chromeのプロファイルを指定して起動する方法をシンプルに解説

Pythonを使ったWebスクレイピングやブラウザ自動化において、Seleniumは非常に強力なツールです。

通常、SeleniumでChromeを起動すると、Cookieやキャッシュが一切ない「クリーンな状態」でブラウザが立ち上がります。

しかし、普段利用している設定やログイン情報を保持したまま、特定のChromeプロファイルを指定して起動したい場面も多いでしょう。

プロファイルを指定することで、二段階認証が必要なサイトへのログインを省略したり、特定の拡張機能が有効な状態で自動化を開始したりできます。

本記事では、Seleniumを用いてChromeのプロファイルを指定して起動するための具体的な手順とコードを解説します。

Chromeプロファイルを使用するメリット

Seleniumでプロファイルを指定する最大のメリットは、ブラウザのセッション情報を維持できる点にあります。

多くのWebサービスではログイン状態を保持するためにCookieを利用していますが、通常の自動実行では毎回ログアウトした状態で開始されてしまいます。

プロファイルを指定すれば、過去に保存されたログインセッションやフォームの入力履歴、ブラウザ拡張機能の設定をそのまま引き継ぐことが可能です。

これにより、自動化プログラムの中で複雑なログイン処理を記述する手間を大幅に削減できます。

また、特定の広告ブロックツールや開発者向けの拡張機能が入った環境をそのままテストに使用できるため、検証効率が飛躍的に向上します。

プロファイルのパスを確認する方法

Seleniumでプロファイルを指定するためには、まず自分のコンピュータ上の「ユーザーデータディレクトリ」の場所を把握する必要があります。

Chromeのアドレスバーに chrome://version/ と入力して実行してください。

表示された項目の中から「プロフィールパス」という項目を探します。

そこに表示されているパスが、プロファイル情報が保存されているディレクトリの場所です。

一般的に、OSごとのデフォルトのパスは以下の通りです。

OS標準的なプロファイル保存先パス
WindowsC:\Users\(ユーザー名)\AppData\Local\Google\Chrome\User Data
macOS/Users/(ユーザー名)/Library/Application Support/Google/Chrome
Linux/home/(ユーザー名)/.config/google-chrome

パスを取得する際は、末尾の「Default」や「Profile 1」というフォルダ名を含まず、その一つ上の階層である「User Data」までをコピーするのが基本です。

Seleniumでプロファイルを指定する基本コード

パスが確認できたら、Pythonのコードで options.add_argument を使用して設定を反映させます。

以下のサンプルコードでは、指定したパスのプロファイルを使用してブラウザを起動する方法を示しています。

Python
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.chrome.service import Service

# Chromeオプションのインスタンスを作成
options = Options()

# ユーザーデータディレクトリのパスを指定(自身の環境に合わせて書き換えてください)
# Windowsの場合の例: r'C:\Users\YourName\AppData\Local\Google\Chrome\User Data'
user_data_path = r'/Users/example_user/Library/Application Support/Google/Chrome'
options.add_argument(f'--user-data-dir={user_data_path}')

# サービスオブジェクトの作成
service = Service()

# 指定したプロファイルでブラウザを起動
driver = webdriver.Chrome(service=service, options=options)

# 動作確認のため任意のサイトを開く
driver.get("https://www.google.com")

# プロファイルが読み込まれていることを確認したら終了
# driver.quit()
実行結果
(指定したプロファイルが適用された状態でChromeブラウザが立ち上がる)

コード内の r'...' という記述は、Windowsのパスに含まれるバックスラッシュを正しく扱うための「未加工文字列(raw文字列)」指定です。

パスの指定を間違えると、新しい空のプロファイルが作成されてしまうため注意しましょう。

複数のプロファイルを使い分ける方法

Chromeで複数のユーザーアカウントを作成している場合、どのプロファイルを使用するかを個別に指定する必要があります。

「User Data」ディレクトリ内には、「Default」という名前のフォルダや「Profile 1」「Profile 2」といった名前のフォルダが存在します。

これらを切り替えるには、--profile-directory という引数を追加します。

Python
from selenium import webdriver
from selenium.webdriver.chrome.options import Options

options = Options()

# ベースとなるディレクトリを指定
user_data_path = r'C:\Users\YourName\AppData\Local\Google\Chrome\User Data'
options.add_argument(f'--user-data-dir={user_data_path}')

# 使用したい具体的なプロファイルフォルダ名を指定
options.add_argument('--profile-directory=Profile 1')

driver = webdriver.Chrome(options=options)
driver.get("https://www.google.com")

この引数を省略した場合、基本的には「Default」フォルダが自動的に読み込まれます。

自分が普段使っているプロファイルがどれに該当するかは、前述した chrome://version/ で事前に確認しておくと確実です。

注意点とよくあるエラーへの対処法

プロファイルを指定して実行する際には、いくつか注意しなければならない重要なポイントがあります。

1. Chromeが既に開いている場合のエラー

指定したプロファイルが既に手動で開かれている状態(通常のブラウジング中など)では、Seleniumからそのプロファイルにアクセスすることはできません。

もし実行しようとすると、「InvalidArgumentException: user data directory is already in use」というエラーが発生します。

この問題を回避するためには、自動化を実行する前に該当するChromeウィンドウをすべて閉じておく必要があります。

2. パスの指定ミス

パスに日本語(全角文字)が含まれている場合や、スペースが含まれている場合にうまく認識されないことがあります。

Pythonコード内では、必ず絶対パスで記述し、先ほど紹介したraw文字列形式(r'...')を利用するようにしましょう。

3. セキュリティソフトによる干渉

組織のPCなどで、特定のディレクトリへのアクセスが制限されている場合、プロファイルの読み込みに失敗することがあります。

その場合は、自分専用の作業用ディレクトリを別途作成し、そこへプロファイル一式をコピーして使用する方法も検討してください。

実用的な活用シーン

プロファイル指定機能は、日常的なルーチン業務の自動化において非常に有効です。

たとえば、社内ポータルサイトへの自動ログインなどが挙げられます。

多要素認証が導入されている環境では、完全に自動化することが技術的に困難な場合もあります。

しかし、プロファイルを指定してあらかじめログイン済みのセッションを読み込めば、認証のステップをスキップして必要な情報の取得だけに集中できます。

また、スクレイピングを行う際に、あらかじめログインして特定のフィルタを適用した画面を初期表示させるといった応用も可能です。

まとめ

SeleniumでChromeのプロファイルを指定して起動する方法について詳しく解説しました。

この手法を活用することで、ブラウザのログイン状態や設定、拡張機能などを保持したまま自動化を進めることが可能になります。

重要なのは、「ユーザーデータディレクトリ」のパスを正しく特定し、--user-data-dir 引数で指定することです。

また、ブラウザが重複して起動していないかという点にも十分に注意を払ってください。

今回の手順を参考に、より実用的で効率的なブラウザ自動化環境を構築してみましょう。

URLをコピーしました!