目次
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