目次
はじめに
Pythonでスクレイピングをしていると、「プルダウンメニュー(セレクトボックス)の値を自動で選択したい」と感じることがあります。
今回は、私がその機能を実装するにあたり調べた内容と、実際に動作させた方法をご紹介いたします。
HTML構造からプルダウンの要素を探す
まずは、操作したいWebページのHTMLを確認します。
対象のセレクトボックスは、通常以下のような形で記述されています。
<select id="ticket_id_8181">
<option value="1">〇〇</option>
<option value="2">△△</option>
</select>
この場合、id="ticket_id_8181"の部分が操作対象になります。idだけでなく、nameやclass属性が使われている場合もあるため、自分が対象としたいフォームの構造をブラウザの開発者ツールなどで確認しておく必要があります。
Pythonでプルダウンを操作する実装例
実際に使用したコード
以下は、Seleniumを使ってプルダウンの選択肢を変更するコードです。
from selenium.webdriver.support.ui import Select
id_element = browser.find_element_by_id("ticket_id_8181")
element_select = Select(id_element)
element_select.select_by_value("1")
各行の解説
- 1行目:
Selectクラスをインポートします。これは<select>タグを扱うために必要です。 - 2行目:対象の要素をIDで取得します。ここでは変数
browserが、既にページを開いている状態を想定しています。 - 3行目:取得した要素を
Selectオブジェクトとしてラップします。 - 4行目:
value="1"の選択肢を選びます。select_by_value()の引数には、HTML上のoptionタグのvalue属性を指定します。
注意点と補足
select_by_value()は、<option>タグのvalue属性と完全に一致する文字列を指定する必要があります。誤字や全角・半角の違いに注意してください。- Seleniumのバージョン4以降では、
find_element_by_id()などのメソッドは非推奨となっているため、以下のように書き換えるのが推奨されます。
from selenium.webdriver.common.by import By
element = browser.find_element(By.ID, "ticket_id_8181")
- サイトによってはJavaScriptでプルダウンが生成されるため、適切なタイミングでの処理実行(明示的な待機など)も重要になります。
まとめ
Seleniumを使えば、PythonでWebページ上のプルダウンを簡単に操作できます。
フォームの自動選択、検索条件の自動入力など、実務にも活用できる場面は多くあります。
HTML構造をよく確認し、対象要素を正確に指定したうえで、Selectクラスを利用して処理を行うようにしましょう。
少しでも参考になれば幸いです。
