mk-mode BLOG

このブログは自作の自宅サーバに構築した Debian GNU/Linux で運用しています。
PC・サーバ構築等の話題を中心に公開しております。(クローンサイト: GitHub Pages

ブログ開設日2009-01-05
サーバ連続稼働時間
Reading...
Page View 合計
Reading...
今日
Reading...
昨日
Reading...

Ruby - Anemone でサイト内リンク一覧取得!

[ プログラミング ] [ Ruby ]

こんばんは。

通常、サイト内のリンクを検索するには HTML パーサ等を使用するかと思います。(Ruby だと Nokogiri, Hpricot 等)

しかし、自分で HTML パーサを使用しなくても簡単にリンクの一覧を取得できるライブラリがあります。

Anemone という RubyGems ライブラリです。

以下、インストール方法と使用例の紹介です。

0. 前提条件

  • Ruby 2.0.0-p247 での作業・動作確認を想定。

1. anemone インストール

RubyGems ライブラリなので、いつものようにインストールできる。

1
$ gem install anemone

2. Ruby スクリプト作成例

以下のように、簡単な例を作成してみた。

test_anemone.rb
1
2
3
4
5
6
7
8
9
10
11
12
13
require 'anemone'

url = "http://www.mk-mode.com/rails/"
opts = {
  :skip_query_strings => true,
  :depth_limit => 1,
}

Anemone.crawl(url, opts) do |anemone|
  anemone.on_every_page do |page|
    puts page.url
  end
end

オプションについて、

  • :skip_query_strings => true はクエリストリング(URL に付与する ? で始まるオプション文字列)はスキップする。
  • :depth_limit => 1 は読み込む階層の深さを 1 に設定。(該当 URL 内に存在するリンクのみを検出するという意味)
    デフォルトは :depth_limit => false で、存在する URL を再帰的に取得していく。
  • :storage を設定すれば MongoDB 等のデータベースも使用できるようだ。(デフォルトは使用しない(RAMを使用する)設定になっている)

その他のオプションデフォルト値は、"<anemone インストールディレクトリ>/lib/anemone/core.rb" を見れば分かる。

3. Ruby スクリプト実行

作成した Ruby スクリプトを実行してみる。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
$ ruby test_anemone.rb
http://www.mk-mode.com/rails/
http://www.mk-mode.com/rails/calendar/calendar
http://www.mk-mode.com/rails/calendar/calendar/
http://www.mk-mode.com/rails/calendar/calendar_year
http://www.mk-mode.com/
http://www.mk-mode.com/rails/
http://www.mk-mode.com/rails/calendar/holiday
http://www.mk-mode.com/rails/calendar/sekki24
http://www.mk-mode.com/octopress/
http://www.mk-mode.com/rails/calendar/zassetsu
        :
===< 途中省略 >===
        :
http://www.mk-mode.com/octopress/2013/08/04/octopress-sitemap-option/
http://www.mk-mode.com/octopress/2013/08/03/mysql-innodb-optimization
http://www.mk-mode.com/octopress/2013/08/03/mysql-innodb-optimization/
http://www.mk-mode.com/octopress/2013/08/01/blog-access
http://www.mk-mode.com/octopress/2013/08/01/blog-access/
http://www.mk-mode.com/rails/contact
http://www.mk-mode.com/octopress/2013/07/31/web-sitemap-robots
http://www.mk-mode.com/octopress/2013/07/31/web-sitemap-robots/
http://www.mk-mode.com/rails/feed/atom.xml
http://www.mk-mode.com/rails/movies/Fedora_16_64_Server.flv

参考サイト


単にサイト内の URL 一覧を取得するだけなら、HTML パーサを使用するより格段に便利です。

用途に合わせて使い分けると良いかも知れません。

以上。

Comments