noteをご覧のみなさん、こんにちは!
第4開発事業部のTAIKIです。
今回はプロ野球の打撃成績をスクレイピングしてjsonとして取得するAPIを作ったので、そちらについてご紹介したいと思います!
今回のAPIを作ろうと思ったきっかけ
私はプロ野球観戦が趣味なのですが、この趣味であるプロ野球を題材にJavaの復習を兼ねてアプリ作成してみようと思いAPI作成に取り掛かることにしました!
スクレイピングとは?
エンジニアの方はもちろんご存知だど思いますが、非エンジニアの方向けにスクレイピングとは何かを説明させていただきます。
スクレイピングとは「データを収集しかつ目的に合わせて加工すること」を意味します。この「データ」とはWeb上の画像やデータを指します。
似たような言葉に「クローリング」がありますが、こちらはデータの収集を意味していて、抽出・加工することまでは含まれていないんですね。
もし、スクレイピングをAPIで自動化できれば、データ活用の効率は格段にアップします!
主な仕様について
Javaバージョン :1.8
URLパラメータは以下。
それぞれ指定がない場合はセ・リーグと2022年に設定されてある。以下凡例。
Git情報
Git情報はこちらをご覧ください↓
Javaコード
Controller
Model
getter/setterは省略。
表示画面
ブラウザで動かした画面はこちら。
実際にスクレイピングしてデータ収集した結果はこちら。
API作成を振り返ってみて
久々にコーディングをしたのであらゆるところで手詰まりになりました...。
とはいえ趣味を絡めて復習の機会を設けられたので非常に有意義な時間になりました♪
今回のAPI作成で苦労した点は、欲しい情報をブロック要素から読み解いてピンポイントで取得することです。こちらについては、要素指定によって取得できる情報がどう変化するか何度も試して乗り越えることができました。
また、今回の作成を通してブロックの要素を読み解く過程で、フロントエンド側の知識が習得することができました。そして、得られた気付きとしては、バックエンド側から渡すデータによってフロントエンド側の技術者の機能実装に助力できるということです。
今後の技術的な目標としては、データのソートや絞り込みをDB側・バックエンド・フロントエンドでそれぞれ実装していきたいと考えています。
ソースは恥ずかしいですがあえて公開しているので、gitからクローンして遊んだり読んで些細なことでもコメントしてもらえると今後に活かせますのでよろしくお願いします。
あと今回リーグ・単年で取得するロジックですが、NPB公式から両リーグ・17年分全てを一括で取得するロジックも裏では作ったので色々と試して遊べそうです^o^
以上、ここまでお読みいただきありがとうございました!
↓ ↓ ↓ 採用サイトはこちら ↓ ↓ ↓
↓ ↓ ↓ ALHについてはこちら ↓ ↓ ↓
↓ ↓ ↓ もっとALHについて知りたい? ↓ ↓ ↓