New Python プログラミング

【Python】スポーツナビから海外サッカーの順位表をスクレイピング

2021-07-07

みなさん、こんにちは。いし(@ishilog2)です。

今回はPythonを用いて、Yahoo SportsNaviから海外サッカーの順位表をスクレイピングにて取得したいと思います。

導入編

今回のコードではrequestsとBeautifulSoup、Pandasを使用します。
インストールしていない方はインストールして下さい。

実践

スポーツナビ(https://soccer.yahoo.co.jp/ws/standings/52)から順位表を取得します。

サンプルコード

このサンプルを使用すると次のような結果が取得できます。

解説

① requestsを用いてHTMLを取得
requests.get('URL')でYahoo天気のHTML情報を全て取得します。取得した内容を変数rに格納しています。

② BeautifulSoupを使用してhtml形式にパース
①で習得したHTMLからBeautifulSoupオブジェクトを作成します。

パース(parse)とは

自分の環境で扱えるように解析、変換することをparseと言います。そしてパースする処理をまとめたプログラムのことをパーサー(parser)といいます。今回使用しているBeautifulSoupはこのパーサーとなります。

③ データの抽出

「sn-table sn-table--ranking」というクラスの内容を変数rsに格納します。rsはリスト型となります。

④ リストの加工

このままだとリスト内に不要データが多いため無駄なデータを省いていきます。

リスト内表記を使用して、splitlines()で改行コードで分割し、strip()で文字列の前後の空白を削除します。
続いてリスト内の空白要素を削除します。

最後に順位・チーム名・勝点・試合数・勝数・引分数・負数・得点・失点・得失点差となるようにリストを10個ずつに分割します。

⑥ リストをデータフレームへ変換

pd.DataFrame()でリストからデータフレームへ変換します。
リスト1つ目はヘッダーのためrs[1:-1]で2つ目からをデータフレームにしています。カラムにはリスト1つ目を設定します。

【おまけ】各リーグコード

リーグ名 番号
イングランド プレミアリーグ 52
スペイン ラ・リーガ 67
ドイツ ブンデスリーガ 56
イタリア セリエA 53
フランス リーグアン 54
オランダ エールディビジ 2
ベルギー ベルギーリーグ 48
ポルトガル ポルトガル・リーグ 69

 

-New, Python, プログラミング
-, ,