Rubyでanemoneを使用する

Rubyでanemoneを使用する

anemoneの使用方法

  1. まずはrubyスクリプトよりライブラリを使用するためにrequireする。
  2. anemoneではURL(ドメインでも可能)を設定することで対象のURLよりリンクを検索し処理を行うことができる。

簡単なサンプルコード

require 'anemone'

# クローラクラス
# URLを返却する
class Crawl
	# 階層は1つまでたどる
	def find_url(domain)
		urls = []
		Anemone.crawl(domain, :depth_limit => 1) do |anemone|
			anemone.on_every_page do |page|
				urls.push(page.url)
			end
		end
		return urls
	end
end

上記のコードではドメインを引数として渡すとそのドメインより1階層のみを検索し検索結果のURLを配列にして返却するメソッドを定義している。

解説

オプション用途
depth_limit検索する階層の数を設定する
delay1つ検索するときの待ち時間を設定する
skip_query_stringstrueを設定するとクエリストリングを無視する

などが存在している。

※ 詳しくはGitHub READMEを参照すること。

プロキシ環境でクローリングを行う場合

注. 私が躓いた部分です

設定値

オプション内容
proxy_hostプロキシのホスト名のみを設定する
proxy_portポート番号をstringで設定する

※ ここで重要な箇所はプロキシのホスト名のみを設定する点です。

Nokogiriライブラリでは http://xxx.co.jp:80 のような感じでプロキシ設定を行うのですがAnemoneライブラリでは xxx.co.jp の部分しかホストには設定を行いません。

ここを http:// (プロトコル)を設定してしまうとプロキシの設定が上手くできないため躓いていました。

※ ホスト名と書いてあるのにプロトコルから設定してしまうのは私だけ??

参考