【Selenium】要素の属性名から属性の値(属性値)を取得:get_attribute()

時計 2022.04.13 / 時計

【Selenium】要素の属性名から属性の値(属性値)を取得:get_attribute()

本記事ではPythonのSeleniumにおける、要素の属性名からその属性の値(属性値)を取得する方法について解説していきます。

Seleniumはブラウザを自動操作する際に利用されるモジュールの一つです。スクレイピングやRPAの開発で使用されます。

Seleniumでブラウザ操作を行っていると、対象要素の属性に指定されている値(属性値)を取得したい場面が多々あります。本記事を通して、属性値の取得方法について理解を深めてください。

また本記事ではget_attribute()メソッドを利用した、属性名から属性値を取得する方法を解説しています。

Seleniumで属性から要素を検索する方法については以下記事をご参照ください。

属性名と属性値

属性とはHTMLの要素に性質を与える仕組みです。HTMLの要素とは以下のような構成となっています。

htmlの要素の構成

属性はこのHTML要素の開始タグに「属性名=属性値」の書式で追加します。属性は複数指定することが可能であり、半角スペースで区切って指定できます。

構文

<要素名 属性名1=属性値 属性名2=属性値>…</要素名>

主に利用される属性は以下のようなものがあります。

属性名 説明
id 要素に固有の名前を指定
class 要素に分類名を指定
title 要素に補足情報を指定
style 要素にCSSの効果を適用

このような要素に指定された属性名から属性値を取得する方法について、次項より解説していきます。

要素の属性名から属性の値(属性値)を取得

get_attribute()メソッドとは

Seleniumには要素の属性名から属性値を取得するためのメソッドとしてget_attribute()メソッドが用意されています。

get_attribute()の引数に属性名を指定すると、対象要素からその属性名の属性値が返されます。

構文

WebElement.get_attribute(属性名)

WebElementオブジェクトはfind_element_by_*メソッドで生成されるオブジェクトです。find_element_by_*メソッドやWebElementオブジェクトについて詳しくは以下記事をご参照ください。

私はよく属性hrefやvalue、id、classの属性値を取得するのにget_attribute()を利用します。

例えば次のようなa要素があるとします。

<a href="https://office54.net" id= "link">リンク</a>

上記のa要素のWebElementオブジェクトを生成して、hrefの属性値を取得するには次のように記述します。

element = driver.find_element_by_id("link")
link = element.get_attribute('href')

上記ではhrefの属性値は変数linkに格納されます。

対象の要素に指定した属性名がなかった場合、Noneが返されます。

get_attribute()メソッドの利用法

実際にSeleniumでブラウザを起動して、属性名から属性値を取得するコードを見てみましょう。

# https://office54.net
<html>
    <body>
        <h1>OFFICE54</h1>
        <div class="main">
            <ul>
                <li class="title"><a href="/iot" id=iot>IT Information</a></li>
                <li class="title"><a href="/python">Python</a></li>
                <li class="title"><a href="/django">Django</a></li>
            </ul>
        </div>
    </body>
</html>

上記サイトからid=iotの属性hrefから属性値を取得してみます。

from selenium import webdriver

chromedriver = 'chromedriver.exe'
driver = webdriver.Chrome(executable_path=chromedriver)

driver.get("https://office54.net")
element = driver.find_element_by_id("iot")
link = element.get_attribute('href')
print(link)
# 出力:/iot

このようにget_attribute()メソッドを利用すると、非常に簡単にhrefやvalueなどから属性値を取得することができます。