PythonとSeleniumでブラウザ操作を自動化したよ on Ubuntu
どうも、久しぶりの技術系の記事です。今回はPython3とSeleniumを使ってブラウザ(Chrome)操作を自動化したいと思います。この記事では、Seleniumのインストールから簡単なブラウザ操作までを扱います。そのためPythonのインストールなど下準備は扱いませんのでご了承ください。
OS : Ubuntu 16.04 LTS (他OSでも大丈夫だと思います)
Python : 3.5.2
Selenium : 2.53.6
1. Seleniumとは?
まずはSeleniumとは何かということから書き始めようと思います。Seleniumとは簡単に言いますとWebアプリのテストツールです。その最大の特徴は、実際のWebブラウザを用いてテストを行うことができる点です。Seleniumは今回扱うPythonだけでなく、Rubyやjavaなど意外と広い言語間で使えるみたいです。今回はこのツールを用いてブラウザ操作を自動化させるということをやります。将来的には、本来の使い方であるWebアプリのテストに使えるようになりたいと思います。
2. Seleniumのインストール
では早速始めていきましょう。今回はPythonでやっていくので、インストールはpipでちゃちゃっとやってしまいます。というわけで以下のコマンドでインストールします。
1 |
$sudo pip install selenium |
自分はこれだけでインストールできました。なんということはありませんね。
さて、これでSeleniumの本体はインストールできました。しかしデフォルトのままだと、Firefoxの操作はできますがChromeの操作をすることはできません。そのため、Chrome用のドライバを入れることで対応してきましょう。Chromeドライバはこちらのサイトから入手することができます。本記事ではUbuntuを使用しているので、Linux64bit版を選択してダウンロードしました。ダウンロードしたものを解凍すると「chromedriver」というファイルが入っていると思いますが、次に作成するプログラムファイルと同じ所に配置してください(配置はどこでもいいですが、対応するパスにプログラムの記述を書き換える必要があります)。これで、プログラムからChromeを操作する準備が整いました。
3. プログラムの作成
これで準備はできたので、早速プログラムを書いていきましょう。今回はまず超簡単な例として、Googleのサイトを表示して何かしたの単語を検索させるということをやります。そして、実際に実装したのが以下のプログラムです。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
#coding : utf-8 import os import time from selenium import webdriver if __name__ == '__main__': try: # 検索したい単語の入力 print('Input srarch word : ', end='') search_word = input() # ブラウザの起動 browser = webdriver.Chrome('./chromedriver') # ページ推移 browser.get('http://www.google.com') time.sleep(1) # Googleの検索フォーム要素を取得 search_input = browser.find_element_by_name('q') # 検索フォームに検索単語を入力して検索 search_input.send_keys(search_word) search_input.submit() time.sleep(1) # 検索結果ページのタイトルを出力 print(browser.title) finally: print('.......END.......') # browser.quit() # ブラウザを閉じたかったらこれ |
このプログラムを実行すると、まず単語を入力するように促されます。語を入力すると、ブラウザが起動し、入力した誤での検索結果のページに移動するところで終わります。これだけ聞くと簡単な操作ですが、プログラムの方もシンプルに書くことができます。しかし、今回書いたプログラムと参考にしたコードでもsleepを使って処理を止めているのですが、もっと賢い方法は無いものでしょうか? どなたか教えてください。
あとがき
さて、いかがだったでしょうか? 今回はSeleniumを使った簡単な操作をやりました調べてみるとWebアプリのテストという範囲をこえ、銀行の入出金記録をまとめたり、サイト情報のクローリングに利用しているのが見つかります。みなさんもSeleniumを使いこなして技術の幅を広げてみてください。
「PythonとSeleniumでネットバンキングをスクレイピングする」
http://blog.mursts.jp/…python-and-selenium/
ディスカッション
ピンバック & トラックバック一覧
[…] PythonとSeleniumでブラウザ操作を自動化したよ on Ubuntu […]