ボートレース競走結果 収集クローラ作成② ~webページ巡回~

概要

このページでは、Anemoneを用いたwebページ巡回について説明する。
クローラの全体像については、こちらを参照

実際のコード解説

Anemone.crawlにクロールの起点となるURLを指定、dateはクロールする日付を入れるようになっている。
:depth_limitはリンクをたどる階層の深さ :delayはクロールする間隔を秒単位で設定

facus_crawlでクロールするurlを指定する。
ここで指定されていないのは、読み込みもしない on_pages_likeで正規表現に一致するurlに対して処理をする。
get_resultはNokogiriで使える形式のdocとURLから必要なデータを取り出す処理を行う。
ここに関しては、

https://www.amazon.co.jp/dp/toc/4797380357/ref=dp_toc?_encoding=UTF8&n=465392

といったサイトや書籍を参考にして作成した。

ソースコード

Anemone.crawl("https://www.boatrace.jp/owpc/pc/race/index?" + "hd=" + date , :depth_limit => 2, :delay => 1) do |anemone|
  anemone.focus_crawl do |page|
    page.links.keep_if { |link|
      link.to_s.match(/(\/raceresult)(.)*hd=#{mdate}$/)#実行時の日時のデータを取得
    }
  end

  anemone.on_pages_like(/\/raceresult/) do |page|
    puts "\n\n-------------------------------------------------------------------\n\n" 
    puts page.url.to_s
    #Nokogiri形式にしてget_resultに渡す
    get_result(page.doc,page.url)
  end
end