【Python】プレミアリーグの移籍金をスクレイピングしてみた

こんにちは、のっくんです。

今日はプレミアリーグの各年度の移籍金をPythonでスクレイピングしグラフ化してみました。

プレミアリーグはイングランドにおける1部リーグでサッカーの頂点といえばプレミアリーグといっても過言ではありません。

岡崎のいるレスターシティや、アーセナル、リヴァプール、マンチェスターユナイテッドなど誰でも一度は聞いたことがあるチームが多数いるリーグです。

ブンデスリーガ、リーガエスパニョーラなどとともに五大プロサッカーリーグを形成しています。

この世界有数のリーグに毎年どの程度の移籍金が流れているか気になったので調べてみようと思います。

移籍金のデータ

移籍金のデータについては、以下のサイトに掲載されています。

https://www.transfermarkt.com/premier-league/transfers/wettbewerb/GB1/plus/?saison_id=2018&s_w=&leihe=0&leihe=1&intern=0&intern=1

トランスファーマーケットというサイトで、毎年の選手の移籍金の情報が掲載されています。

URLのsaison_idに年を指定することで、その年度のデータが表示されるようになっています。

*ただし、海外のサイトなので若干重いです。

2018年のデータのTransfer Activity(移籍活動)、Departure(立ち去り)を見てみると、

  • Income: 543.014.781 €
  • Income per club: 27.150.739 €
  • Income per player: 1.444.188 €

移籍金の収入が約5.4億ユーロ、1クラブ当たりの移籍金が約2700万ユーロとなっております。

流石、プレミアリーグですね。
1ユーロ120円などして、移籍金だけで約600億円の収入があるようです。
これにテレビ放映権料やスタジアム収入などを加えればさらに額は増えます。
欧州の主要リーグの中でも、プレミアリーグは圧倒的な売上高を誇っているようです。

選手が立ち去り、つまり他のリーグにいくことでプレミアリーグとしては移籍金が入ってくるのでその移籍金の合計額、1チーム当たりの移籍金、1選手あたりの移籍金が掲載されています。

Requestsを使ってURLにアクセス

requestsを使って、URLにアクセスします。
URLですが、年齢の部分は可変に指定できるようにyear変数として扱うようにします。
For文で指定した年(startからendまで)のデータを取得します。

うまくアクセスできていればステータスコードで200番が返ってきます。ちなみにこのサイトにUser-Agentを指定せずにアクセスしたら404が返ってきたので適当に指定する必要があります。

BeautifulSoupを使って情報を取り出す

次にrequestsで取得したデータをBeautifulSoupに渡します。テキスト情報として渡さないとエラーが返ってくるので注意です。

検証ツールを使って、移籍金が記載されているタグやクラス名を指定します。

Findでは1つのタグ、find_allでは該当するすべてのタグを取得できます。
Findでは、画像の例にあるようにdivタグのtransferbilanzクラスを指定します。

Find_allでは、spanタグのgreentextクラスを指定しています。grenntextクラスが記載されたタグは、Income(移籍金)、Income per club(1チーム当たりの移籍金)、income per player(1選手当たりの移籍金)の3つがありますので、find_allを使ってすべて取得します。

必要な情報のみを取り出す

これはかなり細かいことですが、移籍金に「.」や「€」などのいらない情報があるのでこれを削除して、数値データとしてリストに追加していきます。appendはリストにデータを追加するメソッドです。

スクレイピングするコード

コード全体は以下の通りです。
関数の引数には、開始年度と終了年度を指定します。
実行すると、スクレイピングした移籍金の3つの情報が返ってきます。

リストからデータフレームに変換

試しに2005年から2019年の間のデータを取得してみます。
リストで移籍金の情報が取得したら、列名を指定してpandasのデータフレームに変換します。

データフレームの出力です。

棒グラフにして出力する

Pandasには棒グラフにして出力する機能があるのでそれを使います。

すいません、Google Colabの背景が黒なので見にくいですが、縦が金額(十億ユーロ)、横軸が年度です。
2018年は約5億ユーロですが、2017年は約14億ユーロもあったみたいですね。2017年は大物プレーヤーがプレミアリーグから外に移籍したことが予測できます。

おわり。