no-image

pythonでselenium入門

Seleniumってなに?

ITにおけるSeleniumとは、Webアプリケーションの機能テストや結合テストの自動化を実現するブラウザ駆動型のテストツール群です。Webアプリケーションのテスト自動化に特化したさまざまな機能を備えています。

引用元: Seleniumとは―読み方、意味、WebDriverの使い方 | イー・アルゴリズム

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つです。

  1. pip installでseleniumをインストールする
  2. geckoDriverというのをサイトからダウンロードしてからカレントディレクトに置きます。

Seleniumを使用するためのドライバー → geckodriverは下記のサイトで入手できます。

Releases · mozilla/geckodriver · GitHub

実際にgeckoDriverがない状態でプログラムを進めると、モジュールが使えないことも確認しました。

seleniumをimportするやり方

通常モジュールをインポートする書き方は下の2つなのですがSeleniumのインポート方法は少しかきかたがちがいます。

  1. import モジュール名 もしくは
  2. 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

ただし公式なリファレンスではないので、そこは自己責任のもとやっていく必要があります。