Seleniumでリストやプルダウンを選択する
スクレイピングをしているとき、seleniumでブラウザを開いて、目的の場所まで来てから、画面を操作をして検索などを行い、その結果を取得したいときがあります。その時、検索条件の設定などでリストやプルダウンを選択しないといけない時があります。
どうやってリストやプルダウンを選択したらいいのかをまとめます。
ちなみに、リストというのは、以下のような選択するタイプの要素です。
インポートする
まずは、要素を選択するためのモジュールをインポートします。
from selenium.webdriver.support.ui import Select
要素を見つける
次に、selectのタグを見つけます。
ページで右クリックを押して、「検証」をクリックするとソースコードが出てくるので、その画面で以下のようなタグを探す。探すときに、そのリストをドラッグして右クリックして検証を押すと探しやすいです。
<select name="◎◎◎">みたいなタグになっていると思います。
年ならyearというタグが一般的です。
find_element_by_name('タグ名')
years = driver.find_element_by_name("year")
要素を選択する
見つけた要素を扱えるようにSelectを行う。
years_select = Select(years)
最後に、入力したい値を入力する。
years_select.select_by_value("2019")
# selectの年度を指定する。
years = driver.find_element_by_name("year")
years_select = Select(years)
years_select.select_by_value("2020")
1行目 このページでyearという要素を見つけてね。
2行目 そのyearという要素を選択するよ
3行目 選択したyearに2020と入力するよ。
という意味です。
コードの具体例
インポートはこんなにしなくてもいいが、よく使うのでインポートしたままにしています。
Chromeを操作する設定をして、開くURLを指定して、selectの選択を行う。
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import Select
import datetime
# 1.操作するブラウザ
driver = webdriver.Chrome('C:/Users/username/Downloads/chromedriver_win32/chromedriver')
# 2.操作するページを開く
driver.get('URL')
# 年度を指定
years = driver.find_element_by_name("year")
years_select = Select(years)
years_select.select_by_value("2020")
years_select.select_by_value("ここに選択したい情報を記載する")
2019でもいいし、2020でもOK ただし、実際に選択できる数字しかいれられないのでご注意下さい。
実際に以下のコードでこのブログのこのページの年を変更できます。
(デフォルトは2019年になっていますが、2021年が選択されるようになります。)
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import Select
import datetime
# 1.操作するブラウザ
driver = webdriver.Chrome('C:/Users/username/Downloads/chromedriver_win32/chromedriver')
# 2.操作するページを開く(ブログのこのページ)
driver.get('https://prcmyself.com/how-to-select-from-list-or-pull-down-selenium')
# 年度を指定
years = driver.find_element_by_name("year")
years.send_keys("2021")
いかがですか?入力フォームの2019年が2021年に代わりましたか?