ブラウザを自動操作
ブラウザを自動で操作したい。調べると「Selenium」と呼ばれるツールを発見。
今回は Windows10 + Selenium + Python + ChromeDriver で構築します。
Python
まずはPythonを用意。
Python公式サイト(https://www.python.org/)からインストーラをダウンロード。(執筆時点では 3.7.3 でした)
インストール時に「Add Python 3.7 to PATH」にチェックを入れるのを忘れずに。このチェックを入れることでPATHが通るようになり、コマンドプロンプトからpythonを起動するのが楽になります。
インストール後、コマンドプロンプトで以下のコマンドを入力してバージョンを確認。
C:\Users\XXXXXXXX>python -V
Python 3.7.3
Selenium
コマンドプロンプトで以下のコマンドを入力することでインストールできます。pipはpythonのパッケージ管理システム。
C:\Users\XXXXXXXX>pip install selenium
Collecting selenium
Downloading https://files.pythonhosted.org/packages/80/d6/4294f0b4bce4de0abf13e17190289f9d0613b0a44e5dd6a7f5ca98459853/selenium-3.141.0-py2.py3-none-any.whl (904kB)
100% |████████████████████████████████| 911kB 7.9MB/s
Collecting urllib3 (from selenium)
Downloading https://files.pythonhosted.org/packages/e6/60/247f23a7121ae632d62811ba7f273d0e58972d75e58a94d329d51550a47d/urllib3-1.25.3-py2.py3-none-any.whl (150kB)
100% |████████████████████████████████| 153kB 9.0MB/s
Installing collected packages: urllib3, selenium
Successfully installed selenium-3.141.0 urllib3-1.25.3
You are using pip version 19.0.3, however version 19.1.1 is available.
You should consider upgrading via the 'python -m pip install --upgrade pip' command.
pipのバージョンが古いよと言われますが、そういうもんですかね。
ChromeDriver
今回は Google Chrome でブラウザ自動操作します。Chrome Web Driver(https://sites.google.com/a/chromium.org/chromedriver/)配布サイトからダウンロード。
WindowsにインストールしてあるChromeのバージョンと対になるモノをダウンロードする必要があります。私のChromeは「75.0.3770.100」でした。Downloadsから該当バージョンを選択、chromedriver_win32.zip をダウンロード。
ダウンロード後、解凍したexeファイルを任意の場所へ配置。今回は C:\chromedriver\ に配置します。
テストプログラム作成
テスト用のプログラムを作成します。
エディタで sample.py というファイル名の以下のようなものを作成。
from selenium import webdriver
driver = webdriver.Chrome("c:/chromedriver/chromedriver.exe")
driver.get("https://www.google.co.jp/")
コマンドプロンプトから以下にコマンドを実行。
python sample.py
Chrome が立ち上がり、googleのサイトが表示されます。
もう少し高度なことがしたい
でも、手で入力していくのは面倒。ということでブラウザでの操作をマクロ化してくれる「Katalon Recoder(https://chrome.google.com/webstore/detail/katalon-recorder/ljdobmomdgdljniojadhoplhkpialdid)」を使用します。
一通り「Record」したら、Exportで出力します。「Python2(WebDriver + unittest)」で吐き出し。
あとは同じようにコマンドプロンプトから実行すればOK。
時間で自動実行
ブラウザを自動操作するところまで出来たので今度は特定の時間が来たら勝手に回すようにします。今回はWindowsなのでタスクスケジューラの機能を利用します。
Windows+Rで以下を入力してタスクスケジューラを起動。
taskschd.msc
「新しいフォルダ」を作成し、そこに「基本タスクの作成」。名前やタスクトリガーなどを設定。
最後のプログラム設定は
プログラム/スクリプト:(インストールしたpython.exeを指定)
引数の追加:(自動実行させるpythonファイル)
開始:(sample.pyの配置先)
例
プログラム/スクリプト:C:\Users\XXXXXXXX\AppData\Local\Programs\Python\Python37\python.exe
引数の追加:sample.py
開始:C:\py
これで構築完了。
まとめ
当初はブラウザが行っている通信をChromeのデベロッパーツールで1つずつ調べていこうと思いましたが、通信の仕方が変わったら使えなくなるので今回の方法が見つかって良かったです。一度構築できたら「KatalonRecoder」からマクロ構築は簡単に出来るのでいろんなこと出来そう。