#はじめに
私は現在コンテンツ制作の現場に所属しています。
日々コンテンツを制作または更新し、WordPressにアップしていきます。
基本は創作活動なのですが、たまに作業でしかないタスクが発生することがあります。
- 数百件の外部リンクをWordPressにアップする
- リンク先のサイト構成の変更に伴い数百件の外部リンクのURLを変更する
- 数百件のコンテンツのアクセスレベルを変更する
これらは人間がやる必要のない仕事なので、Pythonで自動化してきました。
具体的には変更したい内容をcsvにまとめて、その内容をもとにSeleniumでChrome Driverを起動し、ブラウザ上でWordPressの内容を更新するといった流れです。
作成したツールはPythonがわからない人でも扱えるようにPyinstallerでexeファイル化してメンバーに配布していました。
しかし問題も抱えていました。
- Google Chromeがバージョンアップするたびに対応するChrome Driverを入れ替えて配布し直す必要がある
- exe内にChrome Driverを内包させているのでファイルサイズが大きくなる
この問題を解決してくれたのがこのライブラリです。
webdriver-manager
このライブラリを使うと、プログラム実行時に現在のGoogle Chromeのバージョンを確認し、
自動で適切なChrome Driverをあてて実行してくれます。
なので、定期的にバージョンの確認をしなくていいどころか、
そもそもchromedriver.exeを用意する必要すらなくなります。
使い方もすごく簡単です。
webdriver-manager導入前の書き方
from selenium import webdriver
driver = webdriver.Chrome(resource_path('chromedriver.exe'))
driver.get('https://www.xxx.com/')
※ resource_path
は気にしないでください。pyinstallerでchromedriverもexeファイルに内包させるために必要になった記述です。
webdriver-manager導入後
pip install webdriver-manager
でインストールしたあとに
from selenium import webdriver
from webdriver_manager.chrome import ChromeDriverManager
driver = webdriver.Chrome(ChromeDriverManager().install())
driver.get('https://www.xxx.com/')
こんな感じで数行書き換えるだけです。
ヘッドレスなどのオプションをつけたい場合は
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from webdriver_manager.chrome import ChromeDriverManager
options = Options()
options.add_argument('--headless')
driver = webdriver.Chrome(ChromeDriverManager().install(), options=options)
driver.get('https://www.xxx.com/')
このように特に独自のルールはなく、
通常通り第二引数にoptionを指定してあげればOKです。
たったこれだけでchrome driverの呪縛から開放されました。
当然のことながらpyinstallerで作成したexeファイルも軽くなりました。
#まとめ
もし定期的に発生するchromedriverのバージョン違いエラーで悩んでる方がいれば、
webdriver-managerを試してみてください。