ボートレース競走結果 収集クローラ作成①

概要

はじめに

前のブログで言った、
ボートレースの競走データを蓄積する仕組み
がおよそ完成した。
ここでは、その製作過程を書いていく。

↓作ろうと思った動機など

完成した物の概要

最終的に作ったものの流れは、

  1. RubyのAnemoneを用いてwebページを巡回
  2. Nokogiriでスクレイピング
  3. その結果をMySQLでデータベースに登録
  4. webサイトを作りそのデータにアクセス

となっている。
④のwebサイトは簡易的な物で、ローカル環境内から動的なwebページを使ってデータベースにアクセスできるようにした。
以上の4項目それぞれについて説明していこうと思う。

robots.txt

今回、クローラを作成するにあたり調べたところ、それぞれのwebサイトには、クローラのアクセスを制限する為の情報があることが分かった。
その情報は、robots.txtという名前でサイトのルートディレクトリ直下に置かれている。
調べて見るとこれは、強制的にアクセスを制限するわけではなく、
主に検索エンジンのクローラが進んで参照し、効率よくリンクをたどる時の参考やアクセスして欲しくないところをサイト運営側が明記する為にあるらしい。
今回は一つのサイトしか見ないため、robots.txtを直接見て確認すると特にクローラのアクセスに
制限は、かけていないことが分かった。
https://www.boatrace.jp/robots.txt

参考
robots.txtとは | SEO用語集:意味/解説/SEO効果など [SEO HACKS]

完成したやつの適当な画像

スクレイピング結果を試しに出力 f:id:maru-taka:20170910065318p:plain

データベースに格納したとこ f:id:maru-taka:20170910062620p:plain

試しに作った適当なwebページ f:id:maru-taka:20170910065818p:plain f:id:maru-taka:20170910065824p:plain

開発環境一覧

Ruby

➜  ruby git:(master) ✗ ruby --version
ruby 2.4.1p111 (2017-03-22 revision 58053) [x86_64-darwin14]

Rubyのいろんなライブラリ

➜  ruby git:(master) ✗ gem list

*** LOCAL GEMS ***

anemone (0.7.2)
bigdecimal (default: 1.3.0)
bundler (1.15.4)
dbd-sqlite3 (1.2.5)
dbi (0.4.5)
deprecated (2.0.1)
did_you_mean (1.1.0)
io-console (default: 0.4.6)
json (default: 2.0.2)
mini_portile2 (2.2.0)
minitest (5.10.1)
net-telnet (0.1.1)
nokogiri (1.8.0)
openssl (default: 2.0.3)
power_assert (0.4.1)
psych (default: 2.2.2)
rake (12.0.0)
rdoc (default: 5.0.0)
robotex (1.0.0)
ruby-mysql (2.9.14)
sqlite3 (1.3.13)
sqlite3-ruby (1.3.3)
test-unit (3.2.3)
xmlrpc (0.2.1)

MySQL

➜  ruby git:(master) ✗ mysql --version
mysql  Ver 14.14 Distrib 5.7.19, for osx10.10 (x86_64) using  EditLine wrapper

Apache

➜  ruby git:(master) ✗ apachectl -v
Server version: Apache/2.4.16 (Unix)

php

➜  ruby git:(master) ✗ php -version
PHP 5.5.27 (cli) (built: Jul 23 2015 00:21:59)
Copyright (c) 1997-2015 The PHP Group
Zend Engine v2.5.0, Copyright (c) 1998-2015 Zend Technologies

zsh

➜  ~ zsh --version
zsh 5.4.1 (x86_64-apple-darwin14.5.0)

参考図書

Rubyのクローラの本と言えばこれみたいなのがあるらしく
図書館で、借りてみるとすごいわかりやすかった。
クローラとは何かというところから実際の運用例まで示されていて
クローラ関係のことは、スクレイピングという言葉だけしか知らなかった私でも非常に読みやすい本だった。
プログラミングは、やったことあってクローラでなにか作りたいという人におすすめ。
未経験からはじめに手に取る本では、ないと思う。

https://www.amazon.co.jp/Ruby%E3%81%AB%E3%82%88%E3%82%8B%E3%82%AF%E3%83%AD%E3%83%BC%E3%83%A9%E3%83%BC%E9%96%8B%E7%99%BA%E6%8A%80%E6%B3%95-%E5%B7%A1%E5%9B%9E-%E8%A7%A3%E6%9E%90%E6%A9%9F%E8%83%BD%E3%81%AE%E5%AE%9F%E8%A3%85%E3%81%A821%E3%81%AE%E9%81%8B%E7%94%A8%E4%BE%8B-%E4%BD%90%E3%80%85%E6%9C%A8-%E6%8B%93%E9%83%8E/dp/4797380357/ref=sr_1_1?ie=UTF8&qid=1505011511&sr=8-1&keywords=ruby+%E3%82%AF%E3%83%AD%E3%83%BC%E3%83%A9