Django Girls and Boys 備忘録

Python、Selenium、Django、java、iPhoneアプリ、Excelマクロなどで気付いたこと、覚えておきたいことなどを載せていきます。

【Python Selenium】セレクトタグのオプションをインデックス番号から選択する方法

Pythonでseleniumを利用してセレクトタグのオプションを選択する方法についての説明になります。

 

セレクトタグでは各オプションの表示テキストやインデックス番号からオプションの選択ができますが、今回はインデックス番号により選択する方法の説明です。

 

 

 

 

1.選択方法

 

セレクトタグでインデックス番号からオプションの選択を行う場合には、セレクト要素に対してselect_by_index()を使用します(以下参照)。

 

select.select_by_index() 

 

 

以下にChromeの場合の例を載せておきます。

 

以下の例の中では、os.getcwd()はカレントディレクトリを表しています。

 

実行する場合には、chromedriver.exeを同じディレクトリ内(カレントディレクトリ)に入れた状態で実行してください。

 

from selenium import webdriver
from selenium.webdriver.chrome import service as fs
from selenium.webdriver.support.select import Select
import os
selenium.webdriver.common.by import By path_driver = os.getcwd()+'\chromedriver.exe' # ドライバー指定でChromeブラウザを開く chrome_service = fs.Service(executable_path=path_driver) driver = webdriver.Chrome(service=chrome_service) driver.get('https://**********.***/')
#セレクトタグの名前が「abcdef」とした場合の指定例 element = driver.find_element(By.NAME, "abcdef")
#セレクトタグの要素を指定してSelectクラスのインスタンスを作成
select = Select(element)

#インデックス番号を指定
indexNum = 1

#セレクトタグのオプションをインデックス番号から選択
select.select_by_index(indexNum)
# タブを閉じる driver.close() driver.quit()

 

同様にEdgeの場合は以下になります。

6~9行目のドライバーの設定の箇所が違うだけです。

 

from selenium import webdriver
from selenium.webdriver.chrome import service as fs
from selenium.webdriver.support.select import Select
import os from selenium.webdriver.common.by import By path_driver = os.getcwd()+'\msedgedriver.exe' # ドライバー指定でEdgeブラウザを開く edge_service = fs.Service(executable_path=path_driver) driver = webdriver.Edge(service=edge_service)

driver.get('https://**********.***/')

#セレクトタグの名前が「abcdef」とした場合の指定例
element = driver.find_element(By.NAME, "abcdef")

#セレクトタグの要素を指定してSelectクラスのインスタンスを作成
select = Select(element)

#インデックス番号を指定
indexNum = 1

#セレクトタグのオプションをインデックス番号から選択
select.select_by_index(indexNum)  

# タブを閉じる driver.close() driver.quit()

 

上記例では、

 

5行目までで必要なライブラリのインポートを行っています。

 

7~10行目はChrome用またはEdge用のドライバー設定となります。

 

7行目のos.getcwd()はカレントディレクトリを表しています。

 

7行目により、path_driverに、chromedriver.exeまたはmsedgedriver.exeのpathが入ります。

このパスの指定から、9,10行目でdriverの設定をしています。

 

このdriverを使用して、12行目でdriver.getの後にオープンしたいURLを指定します(上記例では********.***指定)。

 

その後、15行目で画面内で検索キーワード入力窓の要素を探索して「element」に設定しています。

 

18行目でセレクトタグの要素を指定してSelectクラスのインスタンスを作成しています。

 

21行目でインデックス番号を指定し、24行目でSelectクラスのインスタンスに対してselect_by_index(indexNum)でインデックス番号を引数として渡してセレクトタグのオプションを選択しています。

 

以上がセレクトタグのオプションをインデックス番号から選択する方法の簡単な例になります。

 

 

 

 

Web上のデータ取得、操作に関する参考書籍、サイトなどは、以下の過去記事にも載せていますのでよかったらご参照ください。

 

kuku81kuku81.hatenablog.com

 

 

また、Seleniumを活用したスクレイピングのための一通りの手順としてVisualStudioCodeなどのインストールや簡単なWebサイトアクセス例などは以下にも載せていますのでもしよければ見てみてください。

 

 

kuku81kuku81.hatenablog.com