或阿呆のブログ

Pythonを好んで使っているプログラマです。Ruby,Perl,PowerShell,VBAなどでもたまに書いています。おバカなことが大好きです。

アメブロの全エントリのURLを抽出するスクリプトをRubyで書いてみた。 #Ruby

アメブロに限らずなんだけどブログのURL一覧みたいなのが抽出出来たら便利だと思います。

使い道としては、

などなどが考えられます。

Rubyを使えば比較的簡単に実現出来るようですね。

サンプルコード

# -*- encoding: utf-8 -*-
require 'anemone'

urls = ["http://ameblo.jp/one-shotlife"]
Anemone.crawl(urls,:depth_limit => 5, :skip_query_strings => true) do |anemone|
	anemone.focus_crawl do |page|
		page.links.keep_if do |link|
			link.to_s.match(/one-shotlife\/entry-/)
		end
	end
	anemone.on_every_page do |page|
		puts page.url
	end
end
クロールの起点

http://ameblo.jp/one-shotlife
↑私のアメブロです。

クロールするURLの正規表現

/one-shotlife\/entry-/
アメブロの場合自分のアカウント名の後ろに"entry-xxxxxxxxxxx.html"という形式のhtml名が続くようなのでそこをマッチさせました。

実行結果

$ruby crawl_ameblo_entry.rb 
http://ameblo.jp/one-shotlife
http://ameblo.jp/one-shotlife/entry-11560484929.html
http://ameblo.jp/one-shotlife/entry-11533134010.html
http://ameblo.jp/one-shotlife/entry-11540726818.html
http://ameblo.jp/one-shotlife/entry-11531946232.html
http://ameblo.jp/one-shotlife/entry-11521406908.html
http://ameblo.jp/one-shotlife/entry-11527268628.html
http://ameblo.jp/one-shotlife/entry-11528127103.html
http://ameblo.jp/one-shotlife/entry-11529738989.html
http://ameblo.jp/one-shotlife/entry-11520963943.html
http://ameblo.jp/one-shotlife/entry-11520971864.html
http://ameblo.jp/one-shotlife/entry-11520677151.html
http://ameblo.jp/one-shotlife/entry-11449810064.html
http://ameblo.jp/one-shotlife/entry-11507278497.html
http://ameblo.jp/one-shotlife/entry-11518028238.html
http://ameblo.jp/one-shotlife/entry-11501469698.html
http://ameblo.jp/one-shotlife/entry-11507267752.html
http://ameblo.jp/one-shotlife/entry-11281339703.html
http://ameblo.jp/one-shotlife/entry-11513676950.html
http://ameblo.jp/one-shotlife/entry-11513197853.html
http://ameblo.jp/one-shotlife/entry-11513693459.html
http://ameblo.jp/one-shotlife/entry-11515030320.html
http://ameblo.jp/one-shotlife/entry-11223876164.html
http://ameblo.jp/one-shotlife/entry-11448070578.html
http://ameblo.jp/one-shotlife/entry-11513195197.html
http://ameblo.jp/one-shotlife/entry-11517780782.html
http://ameblo.jp/one-shotlife/entry-11281333218.html
http://ameblo.jp/one-shotlife/entry-11281658352.html
http://ameblo.jp/one-shotlife/entry-11513691803.html
http://ameblo.jp/one-shotlife/entry-11513684892.html
http://ameblo.jp/one-shotlife/entry-11223855566.html
http://ameblo.jp/one-shotlife/entry-11515023956.html
http://ameblo.jp/one-shotlife/entry-11255224005.html
http://ameblo.jp/one-shotlife/entry-11448069473.html
http://ameblo.jp/one-shotlife/entry-11280635970.html
http://ameblo.jp/one-shotlife/entry-11281672369.html
http://ameblo.jp/one-shotlife/entry-11262331039.html
http://ameblo.jp/one-shotlife/entry-11125961224.html

参考書籍

Rubyによるクローラー開発技法 巡回・解析機能の実装と21の運用例

Rubyによるクローラー開発技法 巡回・解析機能の実装と21の運用例