Pythonでブラウザを開こう! ~自作のAIシステムでtoto予想できるまで~

目次

www.toto-ai.com

概要

totoのAI予想システムを開発するにあたって、データが必要になってきます。 この自作AI予想システムは

  • 各チームの順位データ
  • 各チームの対戦結果

以上の2つのデータを過去15年分 収集し、予想に活用しています。 もちろん手作業で収集するわけにはいかないので、自動でブラウザを開き ブラウザ内に表示されている情報を解析し、収集する仕組みを構築しました。 その仕組みを実現するための下準備について今回は紹介します。

toto予想システムを実現するための主な流れ

  • チーム情報の下準備
    • チーム名とID情報の準備
  • データサイトを開く
    • Jリーグ公式のデータサイトを活用するため、指定したURLを開けるようにする
  • 開いたページを自動で操作できるようにする
    • プルダウンやボタンのクリックなどをプログラミングで自動で操作できるように仕組みを構築
  • スクレイピングで情報を収集
    • データサイトを自動で行き来し、表示されている情報を解析し、必要なデータを収集
  • 収集したデータをcsvに出力
    • 収集したデータをひとつのcsvファイルにまとめる
  • AIシステムに収集したデータを学習させる

今回の記事のゴール

今回は

Jリーグデータサイトの順位表検索ページを開く

このページです↓ f:id:totto_soccer:20220304064406p:plain

についてできるようになることをゴールとします!

長くなるので、サイトを開く以外の処理については

また別記事にまとめたいと思います。

実行環境について

この記事執筆現在の環境です。

項目 詳細
PC MacBook Air
OS Mac OS 11.6
Pythonバージョン 3.8.3
Anacondaバージョン 4.9.2
ブラウザ Chrome

開発に使用するブラウザはChrome

をおすすめします!

理由は開発に使用されている率が高く、

検索で情報がすぐ出てくるためです!

データサイトを開く

ここから実際にプログラムを書いて、

動かして行きたいと思います。

まずはデータ収集するためのサイトを開かないと始まりません!

Jリーグ DataSiteの順位表検索ページをまずは開くプログラムを組んでいきます。

import chromedriver_binary
from selenium import webdriver
from webdriver_manager.chrome import ChromeDriverManager

def main():
    # URL指定
    target_url = 'https://data.j-league.or.jp/SFRT01/'
    # Chromeを開く
    # ☆☆ ChromeDriverManagerの記述をしておくと便利です! ☆☆
    driver = webdriver.Chrome(ChromeDriverManager().install())
    driver.get(target_url)

# 実行時にmain()を呼ぶことを定義
if __name__ == '__main__':
    main()


このように書けば、Chromeで開くようになりますが、

ソースコード内の☆印で記載している箇所

driver = webdriver.Chrome(ChromeDriverManager().install())

ですが、このように記述することによって

Chromeのバージョンが上がったとしても、

自動でChromeDriverのインストールを行ってくれて

バージョンを合わせてくれるので非常に便利です!

Webdriver Managerを使うためには設定が必要となってきますので、

以下の記事を参考に設定を行ってから、

実行するようにしてください。

Webdriver Manager インストール方法

solomaker.club

実行後自動でブラウザが閉じないようにする

ソースコードを書き、Webdriver Managerをインストールでき、

実行したところページを開いた直後にすぐ

Chromeが自動で閉じてしまうと思います。

これは正常な動作なのですが、

開いたページをそのまま表示しておきたいですよね。

ということで、ターミナルでなにかキー入力を受け付けるまでは

開きっぱなしにしておこうと思います。

ページを開く処理の下に一行、input処理を追記します。

    driver = webdriver.Chrome(ChromeDriverManager().install())
    driver.get(target_url)
    # ☆☆ キー入力受付処理を追記
    var = input("キー入力があるまで、ブラウザを開きっぱなしにします")

追記後実行してみると、ブラウザは開きっぱなしになると思います。

そして、ターミナル上で適当なキーを入力すると

ブラウザは閉じてくれると思います。

まとめ

いかがでしたでしょうか???

ブラウザをただただ開くだけの紹介でしたが、

これができないと始まらない!

ということで、まずは第一歩といったところ。

次回はブラウザを自動で操作する処理について

書いていこうと思います。

表示されているプルダウンやボタンを自動で操作をすることで、

自動で順位データを収集できるようにしていきたいと思います。

ではではまた次回!