目次
Seleniumってなに?
ITにおけるSeleniumとは、Webアプリケーションの機能テストや結合テストの自動化を実現するブラウザ駆動型のテストツール群です。Webアプリケーションのテスト自動化に特化したさまざまな機能を備えています。
seleniumではブラウザの操作だけでなく、webの要素をとってきたりできるみたいです。簡単に言うとブラウザ操作を自動化できるツールです。
しかしながらseleniumでスクレイピングをするのは邪道みたいです。どちらかという「ブラウザ操作を自動化する」という事の比重のほうが大きい気がします。
from selenium import webdriver browser = webdriver.Firefox() browser.get('http://inventwithpython.com') try: elem = browser.find_element_by_class_name('bookcover') print('そのクラスを持つ要素<{}>を見つけました。'.format(elem.tag_name)) except: print('そのクラス名を持つ要素は見つからなかった')
Pythonでseleniumを使用する方法
seleniumはブラウザ操作を自動化できるモジュールです。私自身存在は知っていましたが、前に挫折して諦めていました。しかし「退屈なことはpythonにやらせよう」の書籍で、なんとseleniumを使う方法が書かれていたのです。
seleniumを使用する準備
やることは2つです。
- pip installでseleniumをインストールする
- geckoDriverというのをサイトからダウンロードしてからカレントディレクトに置きます。
Seleniumを使用するためのドライバー → geckodriverは下記のサイトで入手できます。
Releases · mozilla/geckodriver · GitHub
実際にgeckoDriverがない状態でプログラムを進めると、モジュールが使えないことも確認しました。
seleniumをimportするやり方
通常モジュールをインポートする書き方は下の2つなのですがSeleniumのインポート方法は少しかきかたがちがいます。
- import モジュール名 もしくは
- from モジュール名 import モジュール名
seleniumをインポートするかきかたはこちらです
from selenium import webdriver
webdraiverとかくところがポイントですね。
find_element_とfind_elements
上記のコード6行目の例ですとclassnameがbookcoverという要素を取得し、これがWebDriverオブジェクトといものになります。
そして7行名ではelem.tag_nameとしており、これでtagの名前をとってくることができます。
find_elements は複数形でWebDriverオブジェクトをリストにするようです。
firefox以外でも使えるみたい
僕自身はfirefoxでしか使えないという固定観念があったのですが、chromeで使えることを確認しました。ただしchrome用のwebドライバーを同じようにカレントディレクトリにおいておく必要があります。
使い方や準備を含め良いリファレンスはないのかと思って探していたところ、このサイトが非常に参考になりそうです。
Selenium Python Bindings
ただし公式なリファレンスではないので、そこは自己責任のもとやっていく必要があります。