seleniumのget_attributeの実践的な使い方

プログラミング

最近seleniumにゾッコンです。

今回はseleniumの機能の一つであるget_attributeの実践的な使い方の例を紹介します。

スポンサーリンク

・get_attributeは属性名から属性値を取得する

seleniumのget_attributeは、引数に属性名を指定することで属性名に対する属性値を文字列で取得することが出来ます。

例えば、画面にOrangeと書かれた要素のclassが欲しいとしましょう。

この場合はseleniumはこのように書きます。

orange = driver.find_element_by_class_name("orange_string")
orange.get_attribute("class")
>>>'orange-string'

これでOrangeの属性値が手に入りました。

んで、それが何の役に立つんだよ。

と思うかもしれませんが、これが何気に役に立つんです。

その例を見つけました。

・カレンダー情報が効率よく手に入る

たとえば、とある予約サイトでカレンダーに埋め込まれている予約情報を取得したいとしましょう。

予約情報は〇、△、×の三つです。

ちなみに7月23日の「川とのふれあい野球場」の×の部分の要素は以下のように成り立っています。

日付と×はどのように取得すれば良いでしょう、もうお分かりですね。

×は以下のように取得して、

driver.find_element_by_xpath('//[@id="dlRepeat_ctl00_tpItem_dgTable_ctl02_b20190723"]').text
>>> ' × '

日付に関する情報はidに隠れています。これをget_attributeで取得して、

condition = driver.find_element_by_xpath('//[@id="dlRepeat_ctl00_tpItem_dgTable_ctl02_b20190723"]')
condition.get_attribute("id")
>>> 'dlRepeat_ctl00_tpItem_dgTable_ctl02_b20190723'

最後にprintするときにインデックスを指定すれば、きれいに日付だけをあぶり出すことに成功しました。

condition.get_attribute("id")[-8:]
>>>'20190723'

これならxpathで段落をいちいち指定する必要がないので、コードが短く、読みやすくなります。

まとめ

以上、get_attributeの実践的な使い方の紹介でした。

まあ、要は「物は使いよう」という事なんですね、精進します。