ruby クローラーの作り方 robotex anemone


目次
1、anemone
2、robotex


Anemone

require "anemone"

Anemone.crawl("https://nashiblog.netlify.app/",:delay => 3,:depth_limit =>1) do |ane|
    ane.on_every_page do |page|
        page.doc.xpath("//h3").each do |title|
            puts title.text
        end
    end
end

指定したページから1階層までh3タグを探して取得してきます。


anemone.crawlのオプション


:depth_limit
階層の制限を指定

:delay
sleep機能(アクセスの間隔を指定)

:user_agent
ユーザーエージェントを指定(windowsやmac)

:skip_query_strings
trueにするとURLのパラメーターを無視する


Anemono::Coreのメソッド一覧


on_every_page
取得したすべてのページごとに処理を実行する。

after_crawl
クロール後に各ページのデータに処理を実行する。

focus_crawl
各ページごとに巡回するリンク先を指定する

on_page_like
指定された正規表現にマッチするURLを持つページに処理を実行する。

skip_links_like
指定された正規表現にマッチするURLは取得しない。


Anemone::Pageのメソッド一覧


url
ページのURLを取得する。

headers
header情報を取得する。

code
HTTPのレスポンスコードを取得する。

body
HTMLを取得する。

doc
bodyをNokogiriで使用できる形式(Nokogiri::HTML::Document)で取得する。

links
ページ内の<a>タグのリンクリストを取得する。



robotex


robotexライブラリを使用することで、かんたんにrobots.txtを読んでくれるのでクロールする際確認作業が楽になります。

require 'robotex'

robotex = Robotex.new "Crawler"
p robotex.allowed?("http://www.yahoo.co.jp/") 
# => true
p robotex.allowed?("http://www.facebook.com/") 
# => false
p robotex.allowed?("http://www.homes.co.jp/")
 # => true