はじめに
今回は「Python」をつかって「Chrome」を自動操作していきたいと思います。
自動でブラウザを操作する為のライブラリである「Selenium」を使っていきます。
実行環境
- Python3
- selenium
- Windows10
- Google Chrome
下準備
Pythonの環境構築
以下の記事を参考にしてください。
Seleniumのインストール
コマンドプロンプトを開き、pipでseleniumをインストールします。
pip install selenium
ブラウザに合わせたドライバーを用意する
ブラウザを操作するには、各ブラウザに合わせてドライバーを用意してください。
今回は「Chrome」をしようするため「Chromedriver 」というのをダウンロードします。
こちらの公式サイトからダウンロード可能です。
<ドライバーだけでは動かないのでchrome(ブラウザ)が入ってない方はブラウザも入れておいてください。
また、ドライバーとブラウザのバージョンが違うと動作しないので気をつけてください。
まずはブラウザのバージョンを見ます。
確認方法は、ブラウザのツールバーにあるメニュー をクリックし「ヘルプ」 から「Google Chromeについて」を選択するとできます。
下図はドライバーの公式サイトで、赤で囲んだところがバージョンです。
次に、ダウンロードしたzipファイルを解凍します。
適当な場所にzipの中にあるexeファイルを置く。
(C:\Program Files\chromedriver 的な感じで)
「環境変数を編集」(Winキーを押して「環境変数を編集」と検索すれば出てきます)
を実行し、「Path」に上記のフォルダを追加します。
最後にコマンドプロンプトで 「chromedriver」 とコマンドを実行して、起動できればOKです。
以下は出力になります。
C:\Users\username>chromedriver
Starting ChromeDriver 99.0.4844.51 (f68069574609230cf9b635cd784cfb1bf81bb53a-refs/branch-heads/3987@{#882}) on port 9515
Only local connections are allowed.
Please protect ports used by ChromeDriver and related test frameworks to prevent access by malicious code.
使ってみる
適当なフォルダを作り適当な名前.pyのファイルを作ります。 C:\Users\username\Desktop\python\test1.py 的な感じで作りました。
WEBページを開く
・ブラウザを開く
先ほどPathは通したので()の中は空白で大丈夫です。
webdriver.Chrome(driver_path)
・webページを開く
driver.get('URL')
・webページを閉じる
driver.close()
・ブラウザを終了 (全てのウィンドウを閉じる)
driver.quit()
例としてGoogleのトップページを開いて閉じるだけのコードを下に書きました。
from selenium import webdriver
driver = webdriver.Chrome()
driver.get('https://www.google.co.jp')
driver.quit()
HTMLの要素にアクセス
id、class、xpath 等HTMLの要素にアクセスするために要素を指定して取得する必要があります。
取得することで後述するクリックなどの操作を行います。 参考資料
この中で自分がよく使うのは「xpath」「css selector」の二つです。
こいつらはマジで便利なんで使い方とか記述方式は覚えていたほうがいいです。
・id
driver.find_element_by_id('ID')
・class
driver.find_element_by_class_name('CLASS_NAME')
・name
driver.find_element_by_name('NAME')
・xpath
driver.find_elements_by_xpath(".//a")
・css selector
driver.find_element_by_css_selector("CSS SELECTOR")
クリックなどのアクション
webページを操作するためのアクションです。
以下のリンクに色々乗っているので参考にしてみてください。
・ボタンをクリックする
driver.find_element_by_id('Btn').click()
・Form に文字を入力する
driver.find_element_by_name('From').send_keys("text")
・スクリーンショットをとる
driver.save_screenshot('filename.png')
他にもたくさんありますがここでは割愛します。
今回は定番のチュートリアルとしてGoogleのトップページに行き、
「selenium」というキーワードで検索して、その後ブラウザを閉じるコードを下に書きます。
検索画面のHTMLの要素がわからないとアクション出来ません。
要素はchromeのデベロッパーツール(ブラウザ開いてF12)で確認できます。
入力フォームのHTMLは下記のようになってます。今回はname属性でアクションさせました。
以下がコードです。
from selenium import webdriver
driver = webdriver.Chrome()
driver.get('https://www.google.co.jp')
driver.find_element_by_name("q").send_keys('selenium')
driver.find_element_by_name("q").submit()
driver.save_screenshot('google_screenshot.png')
driver.quit()
スクリーンショットがちゃんと撮れてました!
さいごに
WEBページの自動操作ができるようになりました。
過度なアクセスなどでサーバーに迷惑のかからない程度でプログラミング楽しんでください。