[Python][独学]Webブラウザで自動検索&スクリーンショットが取れる!!SeleniumとChromedriverを使ってみよう!

今日もPythonを学んでいきましょう!

SeleniumやChromedriverというものを用いてWebページのスクリーンショットが取れる!

できることが増えるのは嬉しいですよね!

この記事では自動で検索をしてスクリーンショットを撮ることをしていきます。

スポンサーリンク

Seleniumってなに?

出だしから訳分からんのが出てきたで、、、

大丈夫です、言葉の見た目が難しそうな感じを醸し出していますが、役割は決まっています。

様々なブラウザを自動操作してくれるツール(ドライバー)です。つまり、私たちが普段ブラウザ(Google Chromeとかsafariとか)を使ってする動作を代わりに行ってくれる存在です。
例えば、

  1. Googleのブラウザを開いて
  2. 検索欄に調べたいことを入力して
  3. 検索ボタンをクリック!(Enter)

みたいなことです。

補足としてSeleniumが生まれた経緯としては、

制作したWebアプリケーションの動作確認を手動で行っていた
⬇︎
あまりにも時間がかかる。
⬇︎
勝手にテストしてくれるものはないのか!
⬇︎
Seleniumの誕生!!

みたいな感じですかね。まとめるとブラウザ操作を自動化したいならSeleniumです。

詳しく知りたい!!という場合には公式ページに勝るものはありません。

Selenium公式のページにも

Seleniumブラウザー自動化プロジェクトと書かれています。

https://www.selenium.dev/ja/documentation/

色々と見ていると難しい用語がいっぱい出てきて

なんだかそごそーよくわからないー寝るー

と私はなりますが、いつかはじっくり読み込む日が来るのかもしれません。

Chromedriverってなに?

Google Chromeを制御する為のツール(ドライバー)です。

Seleniumを使いたいとなった時に必要になるのがブラウザですが、制御をするには各ブラウザに対応したドライバーが必要になります。

今回は多く使われているGoogle ChromeのドライバーであるChromedriverを使用したいと思います。

Seleniumをインストールしよう!

 まずはSeleniumから。

ターミナル(コマンドプロンプト)を開いて以下を入力します。

$ pip install selenium

Enterを押してseleniumがインストールできます。

Chromedriverをダウンロードしよう!

Chromeのバージョンを確認する

次にChromedriverのインストールに移りたいと思います。
その前に現在使用しているGoogle Chromeのversionを確認しましょう!
手順はこちらです。

  1. Google chromeを開いて右上をクリック
  2. 一覧が表示されるので、設定をクリック
  3. 設定画面の左下に表示されているChromeについてをクリック
  4. versionが表示されている(できれば最新バージョンに更新する)

手順2の一覧表示の中に”Chromeについて”がある場合はそれをクリックすればVersionが見られます!
手順を画像付きでも一応載せておきますので、ご参考に。

1. Google chromeを開いて右上をクリック

2. 設定をクリック(Chromeについて がある場合はそれをクリック)

3. Chromeについてをクリック

4. 以下の画像のようにVersionが表示されている。最新版でなければ更新しておく(すぐ終わります)

バージョン: 90.0.4430.85(Official Build) (x86_64)

これでバージョン確認ができました!

バージョンにあったドライバーをインストール

公式サイトからドライバーをインストールします。まずは以下のリンクに飛ぶと

ChromeDriver - WebDriver for Chrome - Downloads
Current Releases If you are using Chrome version 115 or newer, please consult the Chrome for Testing availability dashboard. This page provides convenient JSON ...

⬇︎のような画面が表示されます

先ほどの節で確認した現在のChromeバージョンにあった番号のドライバーをインストールします。

数字が羅列していますが、先頭の数字だけ見れば大丈夫です!

現状の私を例にすると、

90.0.4430.85(Official Build) (x86_64)

先頭の数字は90なので、ChromeDriver 90…と書かれているリンクをクリックします。

すると以下のようなページに遷移します。

今お使いのパソコンに合わせてファイルを選択します。

Macなら chromedriver mac64.zip

Windowsなら chromdriver win32.zip

クリックするとzipファイルのダウンロードが開始され、終了したらフォルダを開きましょう

ファイルがダウンロードされているはずですので、これをダブルクリックしてファイルを解凍しましょう!

Chromedriverというexeファイルが現れるはずですので、このファイルを自身がコードを保存しているフォルダに移動しておきましょう!

ちなみに私の場合は書類フォルダ内にtest_chromeフォルダを作成して保存しました。

保存したら、ターミナル(コマンドプロンプト)でChromedriver binaryをインストールしておきましょう!Pythonでドライバーを使用するのに必要になります。

$ pip install chromedriver-binary

これで準備は整いました。お疲れ様です。

 



自動で検索してみる

普段調べるときの流れは⬇︎こんな感じですよね。

  1. Google Chromeを起動
  2. 検索欄を見つけて
  3. 調べたいワードを入力&送信

上記を頭に入れていれば理解も早いはずです。

全体のコードはこちら⬇︎です。うちではかわいい文鳥ちゃんを飼っているので”文鳥かわいい”で検索してみました

import chromedriver_binary
from selenium import webdriver
from selenium.webdriver.common.keys import Keys

driver = webdriver.Chrome()

driver.get('https://www.google.co.jp/')

input_element = driver.find_element_by_name('q')
input_element.send_keys('文鳥かわいい')
input_element.send_keys(Keys.RETURN)


パート毎に見ていきましょう。

最初の3行はChromedriverを動かす&検索するのに必要なツールのセットです。

import chromedriver_binary
from selenium import webdriver
from selenium.webdriver.common.keys import Keys

次の行で、Chromeを起動して(ChromeのWebDriverオブジェクトを作成)

driver = webdriver.Chrome()

URLを指定してGoogleのトップ画面を開きます

driver.get('https://www.google.co.jp/')

次の3行で、検索フォームを見つけて、検索したいワードを入力して送信をしています。

input_element = driver.find_element_by_name('q')
input_element.send_keys('文鳥かわいい')
input_element.send_keys(Keys.RETURN)

コードを実行するとこんな感じで、検索したいワードで検索ができていることがわかります。

ここまでできたら、コードの最後に次のコードを書いてみましょう

driver.quit()

コードを実行すると調べた後にウィンドウが閉じられるようになるはずです。調べた後に閉じたい時には便利そうです。

スクリーンショットしてみる

スクリーンショットを勝手にやってもらいましょう。

なんと以下のコードを付け加えるだけです。

driver.save_screenshot("result.png")

これらをコードに含めて実行してみましょう
今までのを全部まとめたコード⬇︎

import chromedriver_binary 
from selenium import webdriver
from selenium.webdriver.common.keys import Keys

driver = webdriver.Chrome()

driver.get('https://www.google.co.jp/')

input_element = driver.find_element_by_name('q')
input_element.send_keys('文鳥かわいい')
input_element.send_keys(Keys.RETURN)

driver.save_screenshot("result.png")
driver.quit()

おおおおお、ばっちり保存されてる!!!(うるさい)

というわけで、

自動で検索をしてスクリーンショットを撮ることができました!

どこかで応用できそうですね、思いついたら実際にやってみましょう!

ご質問等ありましたら、お気軽にどうぞ!

コメント

タイトルとURLをコピーしました