こんにちは!みやしんです。
最近、技術的な話が続いています。夜な夜なプログラミングに精を出しているので、折角だから形にして残しておこうと思っています^^
今回はGoogle Chrome上での操作を自動化する方法です。自動でIDやパスワードを入力したり、ボタンをクリックできます。Webブラウザ上で繰り返し行う作業や、一定の時間間隔で決まった作業を行うときなどはとっても便利な機能です!
僕はこの機能を使って自分が夜中寝ている間にPythonが勝手に仕事をしていてくれてとても役立っています!
では早速ご紹介します。

Seleniumのインストール
SeleniumとはWebのUI上の操作を自動化できるライブラリです。インストール方法ですが、pipを使ってインストールできます。
pip install selenium
これで普通にインストールできます^^
selenium=4.3.0以降(PyPI 2022/6/24~)でメソッドの書き方が変わっていますので注意が必要です。今回は、この新しい書き方でご紹介しています。
Google Chromeのバージョン確認
この後、ChromeDriverをインストールする際に、お使いのGoogleChromeのバージョンの確認が必要になりますので事前に調べておきます。
まずは、画面右上の点3つのボタンをクリックします。

続いて、「設定」→「Chromeについて」とクリックすると下記のようにバージョンが表示されます。

僕の場合は「バージョン:87.0.4280.66」と表示されていました。
(更新)「バージョン: 100.0.4896.127」と表示されていました。
(更新)「バージョン: 103.0.5060.114」
ChromeDriverをインストール
こちらもpipでインストールできます。
pip install chromedriver-binary==87.0.4280.66
(更新)
pip install chromedriver-binary==103.0.5060.114
しかし、残念ながらエラーが発生することが多いと思います。こんな感じです。

エラーメッセージの中にインストール可能なバージョンが表示されていると思いますので、自分のGoogle Chromeのバージョンより古くて一番近いバージョンのものを指定してインストールします。
そうすると無事にインストールできます!
今回は、
pip install chromedriver-binary==103.0.5060.53.0
にしました!
使い方
Google Chromeを立ち上げる
動作確認をしてみましょう!
下記のようにコーディングしてください。
from selenium import webdriver
from selenium.webdriver.common.by import By
import chromedriver_binary
import time
driver = webdriver.Chrome()
time.sleep(3)
Chromeのブラウザが3秒間立ち上がればOKです!以下のような感じです。

また、Google検索へアクセスするには下記を追記します。
driver.get('https://www.google.com/')

検索キーワードを入れる
※注意 Google Chromeがゲストモードで開かれている必要があります。誰かのアカウントを使っていると上手くいきませんでした。

まず、検索キーワード入力窓で右クリックを押して、「検証」を選択します。

すると、こんな感じで画面の右側にhtmlやcssが表示されます。

もう一回、検索キーワード入力窓で右クリックを押して、「検証」を選択します。

すると検索キーワード入力窓部分のスクリプトが選択されます。
次は、青くハッチングされているスクリプト部分で右クリックを押します。
「Copy」→「Copy full Xpath」を選択します。
これがコピーされます → 「/html/body/div[2]/div[2]/form/div[2]/div[1]/div[1]/div/div[2]/input」
(更新)
「/html/body/div[1]/div[3]/form/div[1]/div[1]/div[1]/div/div[2]/input」
コピー出来たら下記のように書きます。
element = driver.find_element_by_xpath("/html/body/div[1]/div[3]/form/div[1]/div[1]/div[1]/div/div[2]/input")
selenium 4.3.0から「driver.find_element_by_xxx」が廃止されています。新しいコードは以下になります。
(更新)
element = driver.find_element(By.XPATH, "/html/body/div[1]/div[3]/form/div[1]/div[1]/div[1]/div/div[2]/input")
入れたい検索キーワードを設定します。
element.send_keys("銀座で美味しいイタリアン")
こんな感じになります!

ボタンをクリックする
Google 検索ボタンをクリックして検索します。
画面上の「Google検索」ボタンで「Copy full Xpath」をします。
先程と操作方法は同じです。

Google検索ボタンのfull Xpath → 「/html/body/div[2]/div[2]/form/div[2]/div[1]/div[2]/div[2]/div[2]/center/input[1]」
(更新)
/html/body/div[1]/div[3]/form/div[1]/div[1]/div[2]/div[2]/div[5]/center/input[1]
(更新)
「/html/body/div[1]/div[3]/form/div[1]/div[1]/div[3]/center/input[1]」
下記のように書くとGoogle検索ボタンをクリックします。
element = driver.find_element_by_xpath(“/html/body/div[2]/div[2]/form/div[2]/div[1]/div[2]/div[2]/div[2]/center/input[1]”)element.click()
(更新)
element = driver.find_element_by_xpath("/html/body/div[1]/div[3]/form/div[1]/div[1]/div[2]/div[2]/div[5]/center/input[1]")
element = driver.find_element(By.XPATH, "/html/body/div[1]/div[3]/form/div[1]/div[1]/div[3]/center/input[1]")
こんな感じで検索できます!

以下、コードをまとめて載せておきます。
from selenium import webdriver
from selenium.webdriver.common.by import By
import chromedriver_binary
import time
driver = webdriver.Chrome()
driver.get('https://www.google.com/')
element = driver.find_element(By.XPATH, "/html/body/div[1]/div[3]/form/div[1]/div[1]/div[1]/div/div[2]/input")
element.send_keys("銀座で美味しいイタリアン")
element = driver.find_element(By.XPATH, "/html/body/div[1]/div[3]/form/div[1]/div[1]/div[3]/center/input[1]")
element.click()
time.sleep(3)
こんな感じです!覚えておくと役立ちますよ!^^
最後にTipsを載せておきます🤗


また、他にも色々な作業の自動化を勉強したい方にオススメの本があります。pythonの基本的な内容から、Excelやcsvの操作、Webスクレイピング、画像加工など幅広く学習することができます。簡単に分かりやすく書いてありますし、載っているコードをそのまま使えるところがとても良いところです!自分も買ってみてとても良かったので是非参考にしてみてください!
以上です。最後まで読んでくださり、ありがとうございました!



コメント
「ElementNotInteractableException: element not interactable」
が表示され,検索結果が出てくるところまでいけません.ご教授いただければ幸いです.
こんにちは!ご連絡ありがとうございます。
色々な原因があるかもしれませんが、こちらは試されてみましたでしょうか?
https://qiita.com/Ricordanza/items/ace1c68ac58327262848
「ElementNotInteractableException: element not interactable」
が表示され,検索結果が出てくるところまでいけません.ご教授いただければ幸いです.