unexpectedly exited.に悩むあなたへ【Python Selenium】

前回の記事でm1のmacに無事にpython環境を構築。

【5分で完了】いまさらながらM1macでPython環境を爆速構築してみた

ここからスクレイピングを実践していくにあたってまずはseleniumをインストールしておく

% pip install selenium

そしてブラウザはとりあえずChromeを使いたいのでChromeDriverをダウンロードする。
こちらは本家から現在使っているChromeのバージョンに合わせてダウンロードすれば良い。

https://chromedriver.chromium.org/downloads

m1であれば「chromedriver_mac64_m1.zip」を選択すること。

解答して得られるUNIX実行ファイルである「chromedriver」を開発ディレクトリに移動しておく。
例)/Users/[ユーザ名]/Documents/Project/Python/chromedriver

ここまでやればスクレイピングの準備はOK。
早速ゴリゴリ書いていきましょう。

必要なライブラリのimportと最初の画面を起動するサンプルです。
hoge.py

import time
import random
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.common.exceptions import TimeoutException

# Seleniumをあらゆる環境で起動させるChromeオプション
options = Options()
options.add_argument('--disable-gpu');
options.add_argument('--disable-extensions');
options.add_argument('--proxy-server="direct://"');
options.add_argument('--proxy-bypass-list=*');
options.add_argument('--start-maximized');
options.add_experimental_option("excludeSwitches", ['enable-automation'])
# options.add_argument('--headless'); # ※ヘッドレスモードを使用する場合、コメントアウトを外す

DRIVER_PATH = '/Users/hoge/Documents/Project/Python/chromedriver'

# ブラウザの起動
driver = webdriver.Chrome(executable_path=DRIVER_PATH, chrome_options=options)

# Googleを開く
driver.get('https://www.google.com')

そしてターミナルから

% python3 hoge.py

そしてエラー・・・

selenium.common.exceptions.WebDriverException: Message: Service /opt/google/chrome/chrome unexpectedly exited. Status code was:

これがなかなか解決できなかった。

selenium unexpectedly exited

みたいな感じでググっても直接解決策は見つけれず。

で、最終的にいきついた解決策は

開発ディレクトリにおいたUnix実行ファイル「chromedriver」を右クリック→「開く」

要は「開発元不明のセキュリティを解除しておかないとプログラムから起動できない」ということなんだろう。

開くとターミナルが立ち上がる。

Only local connections are allowed.
Please see https://chromedriver.chromium.org/security-considerations for suggestions on keeping ChromeDriver safe.
ChromeDriver was started successfully.

ChromeDriverは問題なく立ち上がったもよう。
このターミナルはそっと閉じる。

そしてまた先程のプログラムを実行

% python3 hoge.py

うんうん。
今度はうまくいきました。

今回の件から、外部からダウンロードした信用できるライブラリは右クリックで開く(開発元不明だけど開く)でセキュアであると認識させる必要がある、ということでした。

こんなん気づかんわ!

ってことでスクレイピングは順調に走り出しております。

レッツ自動化!

お粗末さまでした。

それでは、また。