概要
前回、ブラウザを自動で開く処理について解説しました。
↓こちらの記事です。 www.toto-ai.com
前回の記事でもお話しましたが、
AI予想をするためには、データを収集することがまずは重要です。
そのデータを自動で収集するために必要なブラウザ自動操作
について解説していきます。
今回のゴール
今回はブラウザを開いたあと、
プルダウンを自動で選択する
ことをゴールとします。
↓画像の赤枠の部分がプルダウンです
これができることで、各試合後の順位表や試合結果などを自動で検索することができるようになります!!!
要素の取得
要素とは、ブラウザ上に配置されているボタンやプルダウンやテキストなど
ウェブページに表示され構成されているひとつひとつの部品とでもいいましょうか。
その部品をひとつひとつをプログラムで取得、操作するようにすることで、
自動で操作できるようになります。
要素の名前を知る
要素ひとつひとつには名前がついています。
その名前をもとに要素を検索し取得します。
各要素の名前を知る方法はとても簡単です!
- 名前を知りたい要素の位置で右クリック
- 表示されたメニューから「検証」をクリック
1と2の手順を行うと、
画面右に何やら新しい表示が現れます。
その中に青色に色付けされている行があります。
そこが今回選択した箇所「年度」のプルダウンの要素で
その要素の名前である name=yearId
と記述があります。
この name=
のあとの記述が要素名となります。
value
を知る
name=yearId
の行の左端の ▶ をクリックすると、
さらに表示が増えて、 value=~~~
という表示が
ずらりと並びました。
この value=~~~
がプルダウンで指定できる項目です。
これ value=
のあとに続く値を使って
プルダウンの自動操作をしていきます。
プルダウンの操作プログラムを書く
value
の値までわかれば準備が完了です。
ここから、自動で操作できるようにプログラムを書いていきます。
前回の記事でブラウザを開く処理に
追記する形で書いていきます。
まず、プルダウンを選択する際に便利な機能を追加したいので、
プログラムの冒頭部分に
from selenium.webdriver.support.ui import Select
を追加します。
↓こんな感じで追加します。
import chromedriver_binary from selenium import webdriver from webdriver_manager.chrome import ChromeDriverManager # ↓ Selectを追加 from selenium.webdriver.support.ui import Select
この記述をすることで、あとで出てきますが
Select()
という要素を選択する処理を利用できるようになります!
次に、、、
main()
内に以下のように記述すれば、年度 のプルダウンが
2020年 が自動で選択される状態となります。
# Chromeを開く # ☆☆ ChromeDriverManagerの記述をしておくと便利です! ☆☆ driver = webdriver.Chrome(ChromeDriverManager().install()) driver.get(target_url) # ---- ここから追加した処理 year_element = driver.find_element_by_name('yearId') year_select_element = Select(year_element) year_select_element.select_by_value(str(2020)) # ---- ここまでが追加した処理
実行させてみると、以下の画像のように自動で2020年が指定されていると思います。
プログラムの解説
追記した1行目
year_element = driver.find_element_by_name('yearId')
のfind_element_by_name
で yearId
の要素を取得。
取得した要素を追記した2行目
Select(year_element)
で要素を選択状態にします。
マウスのカーソルを合わせたような感じ
とイメージするとわかりやすいかもしれません!
そして選択した要素の 2020
という項目を
追記した3行目の処理
year_select_element.select_by_value(str(2020))
で2020年を選択させます。
まとめ
以上がプルダウンの基本的な操作方法のプログラムになります。
まだ2020年を指定できただけ!の単純な処理ですが、
次回以降に、このプルダウンの自動操作を利用して
各試合終了後の順位表を取得するURL一覧を作成
する処理を書いていきます!
ではでは、また次回!