Pythonでブラウザ操作する方法ってどうすればいいの?
今回はこんな悩みを解決します。
- Pythonからブラウザ操作するために必要なパッケージ
- Pythonからブラウザを実際に操作する方法
- 検証中のハマったポイント
調べてみるとどうやら Python と Selenium というブラウザを自動で操作するアプリケーションを使うのパターンが定番のようでした。
自身のPC上に環境構築→実装→検証の順番で紹介します。
環境
- MacOS
- Chrome 86.0.4240.111
- ChromeDriver 87.0.4280.20.0
- Python 3.5.5
- selenium 3.141.0
ブラウザ自動操作の環境構築
Seleniumのインストール
まずはSeleniumをインストールします。
下記のコマンドをターミナルで実行してください。
pip install selenium
ChromeDriverのインストール
次にChromeDriverをインストールします。
pip install chromedriver-binary
以上で環境は整いました。
早速サンプルコードを動かしてみます。
サンプルコード実行もうまくいかず【ハマったポイント】
まずはブラウザを立ち上げるだけのコードを実行してみると、、、
from selenium import webdriver
import chromedriver_binary
driver = webdriver.Chrome()
下記のエラーがでてきました。
selenium.common.exceptions.SessionNotCreatedException: Message: session not created: This version of ChromeDriver only supports Chrome version 87
Current browser version is 86.0.4240.111 with binary path /Applications/Google Chrome.app/Contents/MacOS/Google Chrome
どうやらChromeDriverがサポートしているバージョンは 87 のようですが、今使っているChromeのバージョンが 86 ということで整合性が取れていないようです。
ChromeDriverのバージョンを下げるか、Chromeのバージョンを上げる必要があるみたいです。
単純にChromeのバージョンをあげることはできそうなので、ChromeDriver のバージョンを下げてみます。
pip install chromedriver-binary==86.0.4240.22
ChromeDriverの細かいバージョンは下記のサイトから確認できます。
改めてサンプルコードを実行
すると今度はエラーが表示されることなくブラウザが立ち上がってきました!
すごい!!
Pythonでブラウザ検索をしてみる
ブラウザを開いてChromeにアクセスをし、「Python」と検索するコードを組み立ててみます。
下記の公式サイトの例を参考にコードを走らせてみると・・・
import time
from selenium import webdriver
import chromedriver_binary
driver = webdriver.Chrome()
driver.get('https://www.google.com/')
time.sleep(2)
search_box = driver.find_element_by_name('q')
search_box.send_keys('Python')
time.sleep(2)
search_box.submit()
time.sleep(5)
driver.quit()
Gif化がうまくいかず途切れてしまっていますがイメージこんな感じでできました。
さて、下準備は整ったのでやりたかったことに取り組んでみます。
まとめ
PythonとSeleniumを使ってブラウザを操作する方法を紹介しました。
うまくブラウザが立ち上がってこない時は、バージョンを疑いましょう。