スクレイピングでドロップダウンリストを指定したい
1. 環境
内容 | バージョン |
---|---|
OS | Windows 10 Pro (64bit) |
Chrome | 92.0.4515.159 |
ChromeDriver | 92.0.4515.107 |
Python | 3.9.0 |
selenium | 3.141.0 |
- Visual Studio Code
アイテム | バージョン |
---|---|
バージョン | 1.59.1 (user setup) |
コミット | 3866c3553be8b268c8a7f8c0482c0c0177aa8bfa |
日付 | 2021-08-19T11:56:46.957Z |
Electron | 13.1.7 |
Chrome | 91.0.4472.124 |
Node.js | 14.16.0 |
V8 | 9.1.269.36-electron.0 |
OS | Windows_NT x64 10.0.19042 |
Python | 3.9.0 64bit |
2. Select モジュールを使う
以下の様な HTML コードのとき、
<html>
<select name="test" id="Dropdown">
<option value="1">1番目</option>
<option value="2">2番目</option>
<option value="3">3番目</option>
<option value="4">4番目</option>
<option value="5">5番目</option>
<option value="6">6番目</option>
</select>
</html>
まず、Select モジュールをインポート
from selenium.webdriver.support.select import Select
# ドロップダウンリストを取得するために
dropdown = driver.find_element_by_id('Dropdown')
# で、id:Dropdown の要素を取得。
# Select オブジェクトを生成。
select = Select(Dropdown)
# select_by_xxx( )というメソッドで特定の選択肢(option)を選択状態にできる
# 3番目のoptionタグを選択状態に
# インデックスなので1つ目の選択肢は0からスタート。
select.select_by_index(2)
# 最後のoptionタグを選択状態に
select.select_by_index(len(select.options)-1)
Select.options
とすると、全てのoptionタグがWebElementのリストで返ってくるのでlen()
関数で選択肢の数を数えることができる。
今回は中身の値で選択したいので、
select.select_by_value('3')
テキストで指定する場合は
select.select_by_visible_text('3番目')
3. 参考にさせて頂いたサイト