競馬予想のためのWebスクレイピング入門

ハッカーの部屋Python
スポンサーリンク
スポンサーリンク

「Webサイトを使って競馬予想しているけど、必要な情報だけ欲しい。」

「情報収集するのが面倒・・・。もっと楽できないかなぁ。」

 

競馬予想の情報収集にどのくらい時間をかけてますか?

この記事で紹介するWebスクレイピングという技術を使えば、予想に必要なデータを効率よく集めることができます。

「プログラミングが分からないのにできるの?」と思われるかもしれません。

そこで、誰でもWebスクレイピングが体験できるように、次の流れに沿って解説します。

  • そもそもWebスクレイピングとは?
  • Webスクレイピングに必要な準備
  • Pythonの事前知識
  • 実際にWebスクレイピングをやってみる

 

「偉そうに語るおまえは誰やねん。」と思われるので、私のことも少し。

この記事を書いている私ですが、プログラミング歴は約5年です。

今でもPythonやWeb系のプログラミングを勉強しつつ、プログラミングスキルを活かして仕事の効率化を図ったり、ゲームをつくったりしています。

Webスクレイピングを独学するまで、私もプログラミングの経験はゼロでした。しかし、今ではなんとか習得し、自身の競馬予想をほぼ自動化することができるようにまでなりました。

 

独学で習得するのは苦労しましたが、その苦労を知っているだけに、初心者の方でも理解できるように、Webスクレイピングの基礎を分かりやすくお伝えできるように心がけてこの記事を書きました。

 

是非、読みつつ手を動かして見てください。

手軽にWebスクレイピングが体験できるはずです。

それではどうぞ。

 

 

1.そもそもWebスクレイピングとは?

Webスクレイピングとは、Webサイト上の情報を抽出・整形・解析する技術のことです。うまく使うことができれば、手動でデータ収集するよりも、手間や時間を削減することができます。

 

・Webスクレイピングでできること

Webスクレイピングはデータを収集する技術なので、データを活用するシーンで活躍します。

たとえば、株価の変動やショッピングサイトなどの価格調査など、モニタリングやマーケティングで活用されています。他にも研究開発やビジネスの場面で自動化に活用されるなど、利用シーンを挙げれば暇がありません。

データの有効活用が叫ばれて久しいですが、Webスクレイピングの技術を使って、あなた自身が新たなサービスをつくりだす。なんてことも可能です。

 

・心構え

ただ、非常に便利な技術ですが、使うには注意が必要です。

 

・Webスクレイピング禁止のWebサイトでしてはいけない

意味はそのままですが、Webサイトの利用規約などに「スクレイピング禁止」とあれば大人しくやめましょう。取得した情報の取り扱いについて言及しているWebサイトもあるので、規約を確認するなど十分気を付けましょう。

違反した場合、法的に訴えられる可能性があります。

 

・サーバーに負荷がかかると心得る

Webスクレイピングは、サーバーにアクセスするため、アクセス頻度が多いほどサーバーに負荷をかけることになります。

他の利用者がアクセスできないなど、システム障害を引き起こす可能性があるので、連続して頻繁にアクセスすることはやめ、節度を保ちましょう。

なお、Webスクレイピングの練習用に『 出馬表サンプル』を用意したので、本サイトでWebスクレイピングをする場合は、こちらをお使い下さい。

 

2.Webスクレイピングに必要な準備

Webスクレイピングの事前知識は理解して頂けたと思うので、準備を進めます。

Webスクリレイピングの方法はいくつかありますが、今回はPythonというプログラミング言語を使用します。

 

・Pythonのダウンロードとインストール

Pythonは、Webスクレイピングだけでなく、AI開発やExcel操作などもできる、注目のプログラミング言語です。

これを機に、『Python3のインストール方法【10分で完了!】』を参考にしつつ、ご自身のパソコンにダウンロード&インストールしましょう。

Python3のインストール方法【導入は10分で完了!】
Python3のインストール方法についてステップバイステップで説明しています。この記事に沿って手を動かしてもらえれば、迷うことなくインストールができます。

 

「パソコンにインストールするのはちょっと…」という方は、『【Python】ブラウザからオンラインでプログラミングする方法』を参考にしてみてください。

【Python】ブラウザからオンラインでプログラミングする方法
Pythonをブラウザ上からオンラインでプログラミング&実行する方法を説明しています。様々な事情でパソコンにPythonをインストールできない方・したくない方におすすめです。

 

・ライブラリのインストール 

Webスクレイピングに必要なライブラリをインストールします。

ライブラリの説明はここでは割愛しますが、現時点ではとりあえず「いろいろな機能をひとまとめにしたもの」と理解してもらって問題ありません。 

今回は以下の2つを使用します。 

ライブラリ概要
RequestsHTTP 通信ライブラリ
BeautifulSoupHTMLやXMLからデータを引き出すことができるライブラリ

 

まず、Requestsをインストールします。

Windowsキー+Rを押下し、「cmd」と入力し、コマンドプロンプトを起動します。

ちなみにコマンドプロンプトとは、「コマンド」と呼ばれる命令文を入力して、コンピュータを操作したり、プログラムを実行するWindowsのシステムツールです。

この後もコマンドプロンプトは何度か使用するので、起動方法を覚えておきましょう。

以下のコマンドを入力しEnterキーを押下します。

「Successfully installed ~」と表示されれば成功です。

 py –m pip install requests

 

次にBeautifulSoupをインストールします。

同様に以下のコマンドを入力しEnterキーを押下します。

こちらも「Successfully installed ~」と表示されれば成功です。

 py –m pip install BeautifulSoup4

 

これで環境の準備が完了しました。  

 

3.Pythonの事前知識

Webスクレイピングをする前に、ちょっとPythonについて説明です。

Webスクレイピングするときに、事前に知っておいてほしい知識があるので、お伝えします。必要最低限の知識に絞ってますので、チェックしておきましょう。

 

・import文 

import文とは、モジュールやパッケージ、ライブラリを自作のプログラムに組み込むための作法です。

今回のWebスクレイピングでは、先ほどインストールしたRequestsを読み出すのに使用します。

実際は以下のように表記することで、Requestsの機能を使うことができます。

import requests

 

ライブラリ/モジュール/パッケージについては、とりあえず機能がひとつにまとまったものと理解してもらえればOKです。

 

・変数 

Pythonに限らず、プログラム理解するうえで避けて通れないのが変数です。

一般的に変数は、値や文字列を格納しておく箱に例えられます。プログラムを実行する過程で、データを収納したり取り出すために使用します。

Pythonにおける変数も同様で、値を保管するための名前のついた箱と認識してください。

例えば以下のように100を代入し、変数を呼び出すと実行結果として100が返ってきます。 

atai = 100
atai

#実行結果
100

 

プログラムは組んでいくと複雑になりがちなので、どのような種類のデータが、どこに格納されているか判別できるように、変数を使ってラベリングします。なので変数を使うと管理がしやすいという特徴もあります。

Pythonでは、変数の命名にいくつか決まりがあるので、一緒に覚えておきましょう。

  • 先頭に数字は使用できない。
  • 大文字と小文字は区別される。
  • 英数字と_が使用できる。

  

・コメント

自分が書いたプログラムにメモや説明を残したいときは、コメントを使いましょう。

コメントの書き方は、メモや説明文の先頭にひとつだけ半角の#を付けます。#を付けた部分から行末までは、コメントと認識されます。

プログラムは、書かれた内容が正しければ、こちらの意図した結果を示しますが、プログラムに間違いがあると、エラーが発生したり、意図しない結果になったりします。

このとき、プログラムの間違いを検証するために、実行したくないソースコード前に#をつけることで、処理の対象から外すこともできます。 (このことをコメントアウトといいます。)

このように間違いの原因特定にも、コメントは有用です。

 

・print文 

Webスクレイピングをしていると、取得したデータを目で確認したくなるときがあります。

このときprint文を使用すると、実行結果や取得したデータを表示させることができます。 例えば、次のソースコードではdataという変数に格納された文字列を、print文を使用して表示しています。

data = “Hellow”
Print(data) 

#実行結果
Hellow

 

ざっとPythonの基本的な知識について説明しました。

もっとPythonの基礎力を上げたい方は、こちらの『【Python用語集】初心者のための用語解説10選』をご覧ください。

【Python用語集】初心者のための用語解説10選
競馬予想に役立つスクレイピングのやり方・はじめ方をお教えします。 この記事ではPythonで必出の5つの用語を解説。Python学習をはじめたばかりの方、調べたけどわからないという初心者の方に向けて、わかりやすく説明しています。 この記事を読めばPython学習の理解度がアップします。

 

4.Webスクレイピングをやってみよう

だいぶ前置きが長くなりましたが、ここから実際に作業をはじめましょう。

 

手順1.Webページを取得する

まず、Requestsを使ってWebページを取得します。対象は先ほど紹介したURLを使います。

次のソースコードは、Webページを取得し、そのHTTP レスポンスステータスを表示させています。

200が返ってくれば情報の取得は成功です。 

import requests
url = requests.get('https://umano-ie.com/racesample/')  #Webページを取得

print(url.status_code)  #HTTP レスポンスステータスを表示

#実行結果
200(リクエスト成功) 

 

手順2.HTMLページから情報を抽出する 

次にWebページから情報を抽出します。ここで BeautifulSoupを使用します。

取得したい情報が、HTMLページでどのようになっているのか調べておきましょう。

WebスクレイピングはHTMLの要素を指定して行うことになります。

 

HTMLの要素の一例

リンク<A>
タイトル<TITLE>
見出し<h1>~ <h6>

 

調べ方はブラウザによって異なりますが、chromeならディベロッパーツール、Edgeなら開発者ツールを使用して確認することができます。

メモ
特定の単語や画像について調べる場合は、以下の方法で簡単に調べることができます。

  • Chrome:単語や画像を選択し、右クリック→「検証」を選択
  • Edge:単語や画像を選択し、右クリック→「開発者ツールで調査する」を選択

BeautifulSoupはURLを取得できないので、Requestsと組み合わせてWebスクレイピングをします。

 

以下はサンプルのソースコードですが、ここではRequestsでURLをを取得し、BeautifulSoup でHTML要素のタイトルを取得し、print文で表示させています。

6行目の”html.parser”は、htmlを元にパーサ(parser = 構文解析)するという意味です。

問題なく実行されれば、実行結果に記事のタイトルが表示されます。

import requests 
from bs4 import BeautifulSoup 

url = requests.get('https://umano-ie.com/racesample/')  #Webページを取得

soup = BeautifulSoup(url.text, "html.parser")  #htmlを元に解析

print(soup.find_all("title"))   #記事のタイトルを抽出


#実行結果
<title>出馬表サンプル | うまのいえ</title> 
  

  

5.まとめ 

以上、競馬予想のためのWebスクレイピング入門でした。

サクッとWebスクレイピングを体験いただけたのではないでしょうか。

「競馬予想のための」と付いていますが、Webスクレイピングは競馬に限らず、いろいろなシーンで活用できる技術です。

今回は簡素なWebスクレイピングの解説でしたので、実際は個人のやりたいことに合わせてカスタマイズが必要だと思います。

 

「もっとWebスクレイピングの知識を深めたい!」という方に向けて、スクレイピングについての知識や学習方法などをまとめた『【仕事でPython活用】スクレイピングとは?やり方・学習方法を解説』を用意しました。

スクレイピングは、仕事やプライベートに活用できるので、是非ご覧ください。

【仕事でPython活用】スクレイピングとは?やり方・学習方法を解説
仕事のデータ分析に役立つWebスクレイピングを解説しています。Pythonによるスクレイピングのやり方や学習方法を初心者目線で説明しているので、今からスクレイピングを始める方は必読です。

ご清聴ありがとうございました。