pythonで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('そのクラス名を持つ要素は見つからなかった')

seleniumではブラウザの操作だけでなく、webの要素をとってきたりできるみたいです。スクレイピングの定義はわかりませんが、webの情報をとることがスクレイピングだとすれば、スクレイピングもできるということでしょうか?

しかしながらseleniumでスクレイピングをするのは邪道みたいです。どちらかという「ブラウザ操作を自動化する」という事の比重のほうが大きい気がします。

seleniumとは

seleniumはブラウザ操作を自動化できるモジュールです。私自身存在は知っていましたが、前に挫折して諦めていました。しかし「退屈なことはpythonにやらせよう」の書籍で、なんとseleniumを使う方法が書かれていたのです。

seleniumの使用準備

やることは2つです。

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

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

importの仕方が通常とは違う

通常のやり方は↓です

  1. import モジュール名 もしくは
  2. from モジュール名 import モジュール名

ですがseleniumの場合は特殊なようです。

from selenium import webdriver

これがseleniumをインポートする構文です。

 

find_element_とfind_elements

上記のコード6行目の例ですとclassnameがbookcoverという要素を取得し、これがWebDriverオブジェクトといものになります。

そして7行名ではelem.tag_nameとしており、これでtagの名前をとってくることができます。

find_elements は複数形でWebDriverオブジェクトをリストにするようです。

firefox以外でも使えるみたい

僕自身はfirefoxでしか使えないという固定観念があったのですが、chromeで使えることを確認しました。ただしchrome用のwebドライバーを同じようにカレントディレクトリにおいておく必要があります。

使い方や準備を含め良いリファレンスはないのかと思って探していたところ、このサイトが非常に参考になりそうです。

Selenium Python Bindings

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

SNSでもご購読できます。

コメントを残す

*

CAPTCHA