Warning: Undefined array key "options" in /home/c1397404/public_html/ict-worker.com/wp-content/plugins/elementor-pro/modules/theme-builder/widgets/site-logo.php on line 192

PythonのSelenium 4でブラウザを操作するRPAを作成

FacebooktwitterredditpinterestlinkedinmailFacebooktwitterredditpinterestlinkedinmail

RPA で大変な割に需要が多いことNo.1といえばブラウザの操作ではないでしょうか? 日本のクラウド化が遅れているとはいえ、クラウドやSaaSを一切導入していない会社というのは珍しいと思います。仮に会社で導入していなくても、個人では使っている人がほとんどだと思います。

そんなブラウザ・Webサイトの操作は大変です。同じ環境で動作させても、配置・時間が不安定だったりします。また、ローカルのソフトウェアよりもアップデートによってUIが変わりやすいことも特徴です。

一方で、ブラウザを自在に操作できれば情報収集やネットワーク関連の機能にもアクセスしやすくなります。Python で行えば、デスクトップの RPA はもちろん、その他の「プログラム的な機能」と組み合わせることができるので、他の GUI 系の RPA ソリューションに対して優位性になります。

Selenium はこの他に元々の使い方である Webサービスのデバッグ / テストツール としての活用や RPA と少し似た、情報収集を自動化・効率化するスクレイピングにも活用されます。RPAに限らず有効に活用できるライブラリなので、頑張って学習しましょう。

この記事の内容
  • Python に Selenium をインストールする
  • WebDriver をインストールして Chrome を操作できるようにする
  • Google を開いて検索する
  • XPath と CSS セレクタについて

Python に Selenium をインストールする

Python でWeb サイトにアクセスする場合には、 urllibや、requests といった方法があります。これはこれで使い道があるのですが、私たちが学んでいるのは RPA です(いまのところ)。人間と同じようにブラウザを操作することにしましょう。その方が、コンピューターの内部 や Web 技術に詳しくなくても自動化しやすいです。

py -m pip install selenium

と、PowerShellで入力して Selenium と依存関係にあるパッケージをインストールします(Mac や Linux の方は py -mの部分なしで、pipから直接起動してください)。

ずらずらっと色々出て来て、最後に

Successfully installed async-generator-1.10 attrs-21.4.0 certifi-2021.10.8 cffi-1.15.0 cryptography-36.0.1 h11-0.13.0 idna-3.3 outcome-1.1.0 pyOpenSSL-21.0.0 pycparser-2.21 selenium-4.1.0 sniffio-1.2.0 sor
tedcontainers-2.4.0 trio-0.19.0 trio-websocket-0.9.2 urllib3-1.26.8 wsproto-1.0.0

のように「Seccessfully installed」の文字が出てくれば成功です。ネットワーク系・暗号化系のライブラリが多く追加でインストールされます。インストールされたものを全て覚えている必要はないですが、ざっと名前を眺めておくと後々役に立つこともあるので見ておくといいでしょう。

WebDriverをインストールする

実はこれだけではブラウザを操作できません。今インストールした Selenium は、ブラウザを操作する WebDriver という中間ソフトに接続して、WebDriver に命令・お願いするためのパッケージです。実際にブラウザを操作するのは、 WebDriver という中間ソフト(ドライバ)となります。

とりあえず、今回は、Chromeを利用することにします。

Chromeのバージョンを確認

WebDriver は OSごと、ブラウザごと、バージョンごとに分かれているのでまずはバージョンを確認します。

chrome://settings

上記URL をコピーし、ChromeのURL入力欄に貼り付けて設定ページを開きます(リンクからは開けません)。

設定ページが開いたら、

  1. 左メニューから「Chromeについて」を選択
  2. バージョンの数字を確認

バージョンは非常に長いですが、.(ドット)で区切られた先頭の桁を覚えておけば大丈夫です。画像では、97ですね。

確認できたら、次のステップに進みます。

WebDriverのダウンロードとインストール

ChromeDriver – WebDriver for Chrome

上記のダウンロードページにアクセスします。すると、先頭に「Current Releases」の文字があり、その下にIf you are using…とリストが続きます。

ここで、先ほど覚えておいたChromeのバージョンと比較して、先頭の桁(.区切り)の数字と同じ Chrome version のChromeDriverのリンクをクリックします。

注意点は、Chromeが最新バージョンであってもここで一番新しいものとは限らない(βバージョン等もある)ことと、ChromeDriver のバージョンの数字と、Chrome のバージョンの数字は、先頭以外一致していなくても問題ないことです。あくまでも、ドットで区切られた最初の数字を目安にリンクをクリックしてください。

リンクをクリックすると、各OS用のダウンロードがあります。使っている OS にあわせてダウンロードしてください。数字がついていますが、基本的に32bit, 64bitは気にしなくて大丈夫です。ただし、Mac ユーザーは最近出たM1チップを使っている場合は、m1とついている方をダウンロードするようにしましょう(CPUが異なるため)。

ダウンロードできたら、自由な場所に中のchromedriver.exe (windowsの場合)を展開しましょう。

場所は自由ですが、できるだけパスにスペースや日本語が入らず、かつ短い場所がおすすめです。

楽介の場合は、「D:\bin\WebDriver\ChromeDriver\97」とバージョンまで含めて格納しましたが、使うブラウザは常に一つだよという場合には、この例で言えばD:\binの中に直接入れるくらいでも問題ないと思います。ただし、インストールした場所はどこかに控えておいて忘れないようにしましょう。

ここまでで、Pythonからブラウザ を操作する準備は完了です。

なんで Selenium と WebDriverを別々にインストールするの?

この項目は、ソフトウェアの動作・設計についてより理解を深めたい人向けです。興味がある方だけ読んでください。

なんでこのような仕組みになっているかですが、ダウンロード時に見たようにWebDriverはブラウザごと、バージョンごとに使えるものが細かく分かれています。もちろん、OSごとにも違いますし、Mac では CPU が Intel 製か Apple 純正の M1 かによっても異なりました。

それを Python のパッケージ管理でやると余りにも大変なので、 WebDriver という共通のインターフェイスをもつ中間ソフトが間に入って、いい感じにブラウザごとの違いを吸収してくれているというわけです。