netkeibaをスクレイピングしていきます。
段階を踏んでスクレイピングを解説します。
そのため、スクレイピング初心者でも理解できる内容になっています。
本記事の内容
- スクレイピングを始める前に
- JRAではなくnetkeibaをスクレイピングする理由
- netkeibaの利用規約を確認する
- netkeibaをスクレイピングするための準備
それでは、上記に沿って解説していきます。
スクレイピングを始める前に
本ブログが初めての方は、次の記事を必ず読んでください。
すべて読む必要はありません。
しかし、「【必須】Webスクレイピングに関する考え方」だけは絶対です。
スクレイピングを行うすべての人が理解しておくべき内容となります。
その内容を理解しておかないと、訴えられる可能性すらありえます。
それも刑事罰の方であるため、注意が必要です。
では、上記内容を理解した上で次へ進みましょう。
JRAではなくnetkeibaをスクレイピングする理由
結論から言います。
JRAのサイトは、スクレイピングをするには適していません。
だから、netkeibaをスクレイピングします。
レース結果のデータが欲しいなら、netkeibaで十分です。
では、なぜJRAはスクレイピングに適さないのでしょうか?
その理由を以下で説明します。
JRAはスクレイピングに適さない理由
簡潔に言うと、スクレイピングが困難です。
ただ、決して難攻不落というわけではありません。
やろうと思えばスクレイピングは可能です。
しかし、かなり面倒です。
例えば、2020年2月2日に実施されたセントポーリア賞をスクレイピングする場合を考えましょう。
まずは、該当レースのページへ遷移します。
netkeibaなら次のURLで一気に遷移できます。
https://race.netkeiba.com/race/result.html?race_id=202005010209
しかし、JRAのサイトにはそのようなURLが存在しません。
検索してたどり着くしか方法がありません。
現状では以下のルートしか目的のページには到達できません。
JRAトップページへアクセス
https://www.jra.go.jp/
「レース結果」をクリックすると「レース結果 開催選択」画面に遷移。
URLは、https://www.jra.go.jp/JRADB/accessS.htmlです。
ページ中ごろに「過去レース結果検索」というボタンが見えます。
「過去レース結果検索」ボタンをクリックすると、「過去レース結果検索」画面に遷移。
URLは、https://www.jra.go.jp/JRADB/accessS.htmlです。
「あれ?」と思いませんか?
「レース結果 開催選択」と「過去レース結果検索」のURLが同じなのです。
これ以降も遷移先のURLは、すべて同じです。
つまり、各レースごとに独自のURLを持っていません。
ただ、重賞レースだけは例外です。
以上のことより、セントポーリア賞(2020年2月2日)のURLは存在しません。
もうこれだけでスクレイピングを行うのが、困難だと理解できるはずです。
ちなみに、https://www.jra.go.jp/JRADB/accessS.htmlにアクセスしてみてください。
以下のような画面になるはずです。
おそらく、画面の遷移元(リファラ)もチェックしているのだと思われます。
上記で見てきたように、JRAはスクレイピング対策をかなりしてきています。
その理由は、「JRA-VANデータラボ」の稼ぎに影響が出るわけですから。
そりゃ、タダでデータをスクレイピングされないように企業努力はするでしょう。
ただ、誤解があれば嫌なので一つだけ書いておきます。
こんなURLを変更しないという荒業をできるのは、SEOを無視しているからできる技です。
普通のサービスでは、こんな社内システムのようなことはできません。
URLを変更しないシステムを作る方が、圧倒的に簡単です。
netkeibaの利用規約を確認する
netkeiba利用規約
https://www.netkeiba.com/info/kiyaku.html
上記ページには、いろいろと書いてあります。
でも、これはメンバーを対象にした内容です。
メンバーの定義は以下。
第5条(会 員) 1. メンバーとは、当社にサービスへの登録を申し込み、当社がこれを承認した者をいいます。 2. メンバーは、当社が登録を承認した時点で、このメンバー規約の内容を承諾しているものとみなします。
メンバーでなければ、利用規約は無関係と言えます。
仮に利用規約でスクレイピング禁止と書いてあっても、そんな利用規約に意味はありませんけどね。
基本的に、スクレイピングはログインせずに行います。
ログインした状態でのスクレイピングは、なるべく避けた方がいいです。
有料情報をスクレイピングなどしたら、話が面倒なことになりかねません。
そうは言いつつ、TwitterやInstagramには自動でログインもしています。
もちろん、「【必須】Webスクレイピングに関する考え方」を意識しつつです。
ただ、今回のnetkeibaではログインしてのスクレイピングはおススメしません。
netkeibaをスクレイピングするための準備
OSは、WindowsでもLinuxでも何でも構いません。
もちろん、macOSでも問題ありません。
利用する言語は、Pythonです。
Pythonのバージョンに関しては、3系なら問題はないでしょう。
そして、必要なライブラリは以下。
- Selenium
- BeautifulSoup4
- lxml
これらのライブラリが必要な理由とそのインストール方法は、次の記事で解説しています。
「メルカリのスクレイピング仕様(考え方)」の部分です。
上の記事の内容をもとに、準備を整えてください。
以上が、netkeibaをスクレイピングするための準備でした。
本記事により、netkeibaをスクレイピングするための準備が整いました。
明日以降で、netkeibaのスクレイピングを解説していきます。
追記 2021年2月25日
続きは以下