目次
はじめに
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
クラスを利用して処理を行うようにしましょう。
少しでも参考になれば幸いです。