ご相談・お問い合わせ
平日 9:00-18:00

ほとんどの要素が取得できる!Sleniumでの要素の取得の基本

ほとんどの要素が取得できる!Sleniumでの要素の取得の基本

2021.05.28
この記事の著者
小出 祐廉
小出 祐廉
記事一覧

Seleniumで操作の自動化を始めたが、データを取得したり入力したりする要素をうまく選択できないという悩みを抱えている方が多いのではないでしょうか。この記事ではSleniumを用いて操作を自動化する時の要素を選ぶコツをお伝えいたします。

前提となる環境

  • Python3.7
  • Selenium

おすすめの要素の取得方法

IDが分かる場合

まず最初に考えるのはIDがあるかないかということです。IDがある場合にはIDを使って要素の特定を行いましょう。

driver.find_element_by_id #特定のIDを持つ要素を取得(例:<button id ="submit"></button>)

こちらのように要素にIDが付与されている場合は、driver.get_element_by_idを利用しましょう。

classが分かる場合

IDが付与されていない場合は、classの利用を検討してみましょう。ただし、classの場合は同じクラスが複数箇所で使われている場合が多いので、気をつけましょう。

driver.find_element_by_class_name #特定のclassを持つ要素を取得 => 最初の一つを取得
driver.find_elements_by_class_name #特定のclassを持つ要素を取得 => 全ての要素をリストとして取得

こちらのコードから分かるようにclassを取得する際には2通りの方法があります。

一つ目はdriver.get_element_by_class_nameを使う方法です。こちらは複数の要素が該当する場合に、最初の要素のみを返すメソッドです。最初の要素を選択する場合に使います。

二つ目はdriver.get_elements_by_class_nameを使う方法です。こちらは複数の要素が該当する場合に全ての要素をリストにして返すメソッドです。2番目以降の要素を使う場合はこちらのメソッドを利用しましょう

xpathを使用する方法

Idやclassで要素を特定するのが難しい場合には最終手段としてxpathを使うことができます。コードの例にあるようにplaceholderや要素中のテキスト、親要素などから柔軟に要素を取得することができるのでほとんどの場合はここまでやれば要素を選択することができます。

driver.find_element_by_xpath #特定のxpathに該当する要素を取得 => 最初の一つを取得
driver.find_elements_by_xpath #特定のxpathに該当する要素を取得 => 全ての要素をリストとして取得

まとめ

今回はseleniumを使った要素の取得に関して解説させていただきました。取得する要素に応じて適切な取得方法を使用することで効率的に操作を自動化することができます。是非この記事を参考にして効率良く要素の取得を行ってはいかがでしょうか。

著者プロフィール
小出 祐廉
小出 祐廉

ライターとの原稿のやり取りを支える、サイトエンジン独自のライティング管理システムの開発、運用を担当。効率的なライティングや各種業務を行うための機能改善の他、サービスサイトや自社サイトの管理、運用も行っている。

page top